An Arduino based robot that draws on walls. This involved controlling four stepper motors to adjust the drawing position along along a wall by extending and contracting the length of four non-stretch fishing lines anchored to the upper corners of the drawing area.
All the plastic components were designed on the 3D design applications Blender and OpenSCAD and then printed out on a 3D printer.
A python script was written that takes in SVG images containing the desired drawing, and translates the interpolated lines into point coordinates at regular intervals. The script converts these point coordinates into G-Code instructions which can then be uploaded to the Arduino using a serial USB interface.
The Arduino micro-controller was programmed with a slimmed down G-Code interpreter that only implements the few G-Code operations it actually requires, such as Moving the pen to a specific position.
The Arduino was also programmed to map those G-Code instructions, which are based on a 2D Cartesian coordinate system, to a new coordinate system composed of 4 axes. These 4 axes represent the lengths that the fishing lines need to be for the pen to be located at the desired x,y Cartesian position.
These were then also mapped to actual sequences of steps that the motors would need to follow to carry out those instructions.
A video of the robot in action can be seen below: