Friday, April 2, 2010

Thing-a-Week #7: Rovio Laser Scanner

Due to certain issues, it is currently difficult to add new sensors to the Rovio. One way around the problem is to use the sensors the Rovio comes with in a new way.

Using some 3D printed parts and a 12mm diameter $15 laser line generator from eBay you can make a basic laser scanner. This is based on the laser scanner design from Kenneth Maxon. It uses the 3mm version (Part # 3BT-P8003-00) of the screws that were tested here.

Here is a picture from the Rovio.

This video shows playback of the data recorded into a ROS bag file. The file contains the timestamped image data and commands sent to the robot.

The laser's focus seems less than ideal, and the focus adjustment ring keeps coming loose despite the addition of teflon tape. I have not tried image processing the results yet but I am going to guess that filtering out the line may prove to be difficult. Using an infrared laser and a camera equipped with an IR bandpass filter would probably make image processing signifigantly easier but that would kind of defeat the point of modifying the Rovio. Converting the image data into a 2D laser scan in ROS using OpenCV should be fairly straightforward but will be left as an adventure for another day.

It looks like the concept could work, but practical details may limit its usefulness. If you want to try making your own, the part files, as always, are available at Thingiverse.


Riley Porter said...


BTW small world. Alenhart the guy that made the laser gauge that you based off of is my friend in RL. We made that gauge on my laser cutter :)

BTW... Since we have no option on running the code on the rovio at the moment how are you going to do the signal processing of the range finder? Looks great however.

Possible arduino + wifi = sends commands via wifi webapi to stop move etc?


I Heart Robotics said...

I'm planning on doing all the image processing in OpenCV using ROS to control the robot.

ROS is a robotics framework used by several universities and research groups to build inter-operable software for robotics.

I wrote a basic ROS driver for the Rovio.

The big advantage of this approach is that you can reuse things like navigation code that was written for different robots.