This unit is a team project that centers around the construction of simple machine using stepper motors and the Gestalt Modules developed by MIT in a masters thesis. The project is a team effort and my role was getting the motors running and producing some output. Our entire project is documented in a separate website here. Our objective as a plotter that could draw shapes and write text.
The team website explains in great detail all the elements of the design. My role was getting the thing running and generating some output. I'll get into the details of what the finer points of the generating the output since this is the area that is the most accessible. Gestalt and it's Python version are very interesting developments. The Master's Thesis that describes the reasoning behind virtual machines and the utility of said in the creation of new machines is worth reading. Sadly, PyGesalt's documentation follows the philisophy of 'the code is the documentation' which generates an unnecessary barrier to entry in trying to understand how it all hangs together. Prof. Gerschenfeld has also stated that the Gestalt framework is being superceded by another framework which begs the question of whether it is interesting to invest additional resources into learning the system.
The first task was to connect everthing together to see what works. Our teammate Yann had already built the interface board so it was just a matter of hooking up all the cables and running the single_node.py test program on each motor. All of this worked surprisingly well once it was understood that the temp file (*.vmp) needed to be deleted between runs. It was also necessary to adjust a potentiameter on the board to limit the amount of current flowing on the chip. It was then a straight forward exercise in wiring two nodes together and running the xy_plot.py script which also worked well. The next step was getting some data to actually draw something.
The next step was to start writing something. Data passed into pyGestalt is a two dimensional vector of X,Y integer coordinates. In order to get meaningful coordinates we hacked into the axidraw.py interface which the good folks at Evil Mad Scientist open sourced from their AxiDraw plotter machine. To make things especially easy, everything was written in python and the Inkscape extensions as dynamically loaded extensions that permit changing code in the axidraw extension without having to restart inkscape. The Kinematic model of the Axidraw interface appears to be different then pyGestalt. We located the areas in the code that extracted the raw x,y coordinates and saved this data to a file. Some slight manual manipulation was necessary to remove superflous data. This information could then be directly read into the pyGestalt code and plotted - a video is available on the team website. The pyGestalt required some minor modifications to normalize the coordinate data to both generate integer 'steps' from inches and bring the points to a local 0,0 origin instead of the relative position on the inkscape canvas.
One interesting to note is that plotted text has to be in a particular format where there is no 'thickness'. This article is a complete description of this font and worth reading if one needs to X,Y plot text information.
The Gestalt framework - with a little extra documentation - could prove to be a powerful tool for building machines due to its relative simplicty and, more importantly, extendability. I've not delved into the limitations of the RS-485 protocols but daisy-chaining motors and other sensors in a token-ring type network would certainly facilitate qsfdf machine design and wiring harnesses. If a decent G-code interperter were developed to faciliate interfacing the virtual machine with existing design tools, the door would be open to a lot of different machine configurations. Going further, kinematics of other movements would permit the construction of robot arms and other robotic interfaces linked by a single cable and working on the same integrated network.
N/A