Concept:
For this week’s project we wanted to create a drawing machine that is both random and autonomous. In other words, one that’s able to create new and unique drawings on its own every time it’s turned on.
How the Machine Operates
As far as how the machine operates, we assigned multiple variables in the code to create an interesting drawing pattern that is able to produce random results in a coherent way. For example, there is a 45% chance that one of the two servo motors will move alone for a random amount of time and within a random range, and a 10% chance that both will move.
This was coded this way, as mentioned, to create interesting results that are not too limited by the 180-degree range of the servo motors.
However, as our pals in IM lab witnessed over the weekend, our left servo would have a mind of its own and starting spinning beyond the 180 degree limit occasionally when powered on. This happened both with the old code and the new code, and we cannot understand why this happens, but it is very interesting. We could never figure out why exactly this happened but here’s a video attached.
Drawing Outputs

Process and Challenges
As for the process of building this machine, it was rather difficult at first. We found that our initial idea of building extended arms caused it to have so much weight that the pen was always going down, which made it unable to move at all.
Not only this, but during the assembly process, there were many small details that caused problems, such as the wheels on the servo obstructing the path of the arms. There were also random parts breaking out of nowhere, as well as fasteners securing the servo motors getting unscrewed unexpectedly and frequently.
Now, as for the code, we initially tried to make it so that both arms moved at a specific speed and range during each iteration, which later caused some problems. Since our goal was to make a machine that seemed autonomous and was able to produce random results, this initial code only made either V or U shapes constantly, with almost no variation in where they would go. It would essentially draw a shape and then retrace that shape immediately but just slowly.
So while we were unsatisfied with this initial behavior, we later modified the code to give the machine more freedom of movement and the almost autonomous-like movement and randomness that we were striving for.
As an experiment, we also added an ultrasonic sensor as a form of activation. The idea was that if the user removed their hand from the sensor, it would pause the drawing process; however, we sadly found the interaction to be terribly inconsistent with this and later decided that it did not really change the result that much compared to if the user were to simply turn the machine off by disconnecting it from power.
Reflection
During our process of building this drawing machine, we found that changing even the tiniest part of the drawing machine or the code generated different results, or even unexpected ones. For example, we found that having code that limits the movement while the mechanism is able to produce more results was frustrating, since we knew there was a greater degree of freedom that we could later achieve.
Also, despite only focusing on this type of movement for our machine, we recognize that there is an almost endless amount of combinations that this drawing machine could produce. There are many unexplored shapes or drawing results that we know are possible given the range of movement that the servo motors offer. Nevertheless, for this time, we focused on getting our initial idea of autonomy and randomness working.