Persistence of light, lasers and Computer vision

Imagine being able to paint anywhere and on any surface, no matter how big the canvas is or how far it seems to be! This robotic controlled laser lets turn any landscapes into canvas.

The idea is simple, as they usually are (at least in the beginning). Being fascinated by light painting, I decided to venture using the tools I have today at my disposal.  

The idea was to be able to grab any image and then draw a simplified version of it on a wall. Processing code would do all the analysis and then spit out angles for the Arduino to command the servos. This project has gone through three different iterations. 


Previous Revs

Laser Graffiti 

Laser Graffiti 

Hardware evolution

After quite some changes on the coding department, I found a better way for the laser to follow a more clear path. The next problem turned out to be on the hardware side. Since the angles the laser had to move are so small, the servos couldn't really get so precise and the first pictures turned out to be very... pixelated? I realized that unless I had better servos I would need to gear down the servos. I designed a gear box mechanism to give a 3:1 ratio to the laser, meaning that I would move the servos 3X more to get the same result, this in theory would give me 3X more resolution.

And it did!


ZeroOne Mechatronics 

And then I found these guys... Talking to Paolo Salvagione (Incredibly amazing person) he told me about these servo controllers he had found... Prepared to be amazed just as I was back then:

The modified controllers, or SUPER modified controllers I should say, fit inside most stander servos, they replace the board and the potentiometer, in exchange they offer:

  • Includes 15bit absolute position encoder
  • Profiled movements (control acceleration and velocity through movement)
  • Control loop running at 9,765 KHz !
  • Multiple bus interfaces including RS-485, multi-node uart, I2C! Up to 128 nodes on a single bus !
  • 5 to 24V, 5Amps continuous
  • Multiple software interfaces: Stand alone application, MatLab dll, Arduino library and more

Need to say more? 

The modified controllers can connect through I2C, meaning that you can connect more than 100 devices to the same arduino port and control them simultaneously. To do this however you will need to change the address of each new controller. Fortunately ZeroOne Mechatronics have done a great job documenting and I go more in detail here. 


Lets be honest, looking at a little green dot move on a wall is not very exciting, unless we are able to see the past in the present. This is a concept that I find particularly interesting, we can be presented with information and instances after we can no longer recall it. It would be extraordinary for a person to be able to tell what the laser is drawing just by seeing it move.

The traditional method to see the result of light painting is by taking a long exposure photo. This however is not a fast since you have to wait for the painting to finish in order see the results. This is also a very static process, the result is a single image when the process was full of fluid movement. Finally this method only works in great darkness, which makes the entire process very limiting.

I won't go too much into details here but Isadora is an amazing piece of software that will allow you to process video live, you can add effects and do so much that I don't know yet.

It is node based which makes it easy to play with and immediately see what works. Check it out! I can't wait to use Isadora on many of my future projects.


In this case I am using it to track the color of the laser instead of the light, which means that it doesn't have to be dark for the "long exposure" to work!