I’m often thinking if it is possible to make Art with Arduino. Arduino is a machine, a little computer made with electronic circuits. It hasn’t a soul. Can an Arduino make Art? This is my question.
I’m trying to do something with Arduino that could be Art, or similar to Art. The Arts are painting, poetry, music, sculpture and so on. I’m trying to do something in different Arts. The road is long but I began to travel it. This is my first experiment with painting. Indeed, a easy form of painting, the sketching in Black and White. Arduino drives a robot arm, that with only a pen sketches a city skyline. The skyline is every time different, the buildings are always different. The arm tries to imitate the human sketching, with errors, shaking lines not parallel and so on. The arm tries to be human, to make a little form of Art. This is the goal, I don’t know if the goal is reached. The judgment is yours.
The robotic arms are among the most fascinating robot that you can build. There are many commercial robotic arms with 4-5-6 axes, while, at amateur level, there are no polar arms.
The arms using polar, instead of Cartesian coordinates (x and y), the polar coordinates (angle and radius).
So, the point P(x,y) in polar coordinates became P(r,phi). This means a line, which in polar coordinates is described by a very simple equation, in polar coordinates becomes a complex and more difficult, because the radius can increase and decrease while describing the line.
So, which is the advantage using the polar coordinates? The advantage is the robot is very simple to build. I used also an awesome aluminum infrastructure based on Makerbeam (www.makerbeam.eu) , that allows to build the robot similar to the Lego, with the advantage that all is in metal and not in plastic. Makerbeam is an open-sourced extruded beam construction kit. I got a kit, and this is my first project using it.
The hardware is:
– 1 arduino (2009/uno or Mega)
– a kit of makerbeam for the chassis and 16 ball bearings (www.makerbeam.eu)
– 2 stepper nema 17 400 steps, 0.9° (www.robot-italy.com)
– 2 big easy stepper driver (www.robot-italy.com)
– 2 pignons and 1 gear rack (www.conrad.com)
– 1 little servo motor (www.robot-italy.com)
– 1 pen
This is the robot:
The robot has 2 dof: radius and angle. The forward and inverse kinematics are simple.
The only two shapes that are possible to draw when running one motor at a time is a radial line or a circle segment. The Arduino program implements sort of the Bresenham’s line drawing algorithm to draw segments. Each segment is divided into small segments (steps). Then, for each step we translate this movement to its corresponding changes in the polar coordinate system, angle and radius. This is finally translated to the number of steps to run each motor.
The robot can have a good precision: the balance is between good speed and good precision. If the robot has a low speed it can be very very precise. When the speed grow the precision goes down. But in this work the precision is not very important. The goal is to imitate a human sketch, and the human when are sketching are not precise.
For the sketch algorithm I’m inspired by this processing sketch: http://www.openprocessing.org/sketch/12095 semplified for Arduino. The robot can work alone, without a computer, all the logic is inside the Arduino.
The main inspiration for the polar arm robot building and for the motor driving software comes from this awesome robot: http://roxen.github.io/polar-plotter/
You can see the robot in action here:
The code used for the robot is available here: citta_disegna