Repo on the CBA Gitlab

Squidworks is a controller development framework that implements distributed dataflow graphs across networked, modular hardware elements. With dataflow, we get modular software configuration, and with networking, modular hardware configurations. Because dataflow programming easily overlays on real dataflow graphs, the two systems can share a representation, making configuration possible with one graphic tool, not requiring any programming experience or network configuration (IT) expertise.


The goal here was to provide a platform for the development of the ‘cyber-physical systems’ that make up manufacturing equipment. There has long been an awkward divide between ‘realtime’ control implemented in firmware and the CAD / CAM / Control softwares that guide them. Typically, we use GCode to bridge that divide, but GCode is another awkward abstraction that we are not to fond of for a littany of reasons - the most important of which is that GCodes are ‘one-way’ - we cannot easily retrieve information from a machine during its execution of a GCode. This precludes the development of more intelligent machine controllers that can use realtime feedback to better inform path planning, for example. By implementing either side of these systems - high level, low level, and anything in between - in dataflow programming models, we can easily make systems that span the divide without walking cumbersome representations in the middle like GCode. In a broad sense, the proposal here is to replace file formats in manufacturing with data streams.

For more on this, you can read (sections of) my thesis that details the development of the squidworks framework.