Corentin Briat


Project Description


This is a artistic project where the goal was to build a robotic arm holding a brush at the extremity and whose goal would be to write the word “sens” (French for “meaning”, “sense”, “feeling” or “direction”) with an ink that would disappear once dried, and write the word over again and again. This is an idea from Markus Buser that I helped develop and which has been showed in the exhibition “Dans quel sens?” organized by Markus Buser and Claude Gacon from FabrikCulture.

The robotic arm was designed by Roland Bitterli and built by Claude Gacon using two leadscrews for actuating the two angles of the arms using two NEMA 17 stepper motors, and one additional NEMA 17 stepper motor for lateral rotation using a belt drive mechanism. The electrical part was based on an Arduino UNO, a CNC shield, and three A4988 drivers, and a power supply. No sensor was used.

Methodology and Problems

A kinematic model has been obtained and used to compute the cartesian coordinates of the effector in terms on the angles. The reverse computation was implemented using Newton's method that can iteratively compute a solution to a set of nonlinear equations. This also had the benefit of returning a solution which would be close to the current location as an infinite number of solutions exist, most of them being either unrealistic or identical to others due to periodicity.

Calibration of the model was made using direct measurements of the machenical pieces and numerical fitting for modeling the transfer from motor angles to arm angles. Luckily a linear fit was enough.

A set of functions were developed to move the angles according to the desired location of the brush. The set of all the almost 200 points unevenlly spaced on the word “sens” were implemented using fixed point arithmetic to save memory using polar coordinates as the position of the brush on the vertical axis remains pretty much constant. A main difficulty was the absence of sensors and counters had to be implemented in order to keep track of the current location starting from a known initial position which was decided to (pi/2, pi/2, pi/2) in the angle coordinates. This position was chosen as it was trivial to set it manually. Due to model uncertainties as well as failing motors, some drifts tend to accumulate and needed to be corrected empirically. Due to the absence of sensors, this was major issue since the current location and the computed one were not matching anymore. Another issue that arose was the brush dynamics due to contact with the floor that could either move the robot or even block the motors. The brush had to be adapted to move vertically to ensure the contact with the floor and to avoid blocking the motors. A last problem was the difference of the dynamics when using a dry brush and wet one, the friction with the paper was higher with a wet brush and was difficult to deal with as it was impacting the whole brush trajectory, making it dramatically different than in the dry case. This was finally resolved by simply removing the paper and painting on the floor directly. This had the benefit of also speeding-up the drying process due to the presence of porous floor while the paper tended to absorb the water and accumulate it, causing crinkling of the paper