11 gram Arduino-powered laser rangefinder

I was pleased to see a cool laser rangefinding project on Kickstarter- I hope this project gets fully funded (and I'm a backer). I've actually been experimenting myself with structured light and laser rangefinding using our ArduEye hardware and thought I'd share it here.

The setup is very simple- An Arduino Pro Mini serves as the computing backbone of the device. Via a 2N2222 transistor (I know I know...) the Arduino can on and off a red laser module. The Arduino is connected to an ArduEye breakout board with one of Centeye's Stonyman image sensor chips and a cell-phone camera lens. The whole setup (excluding the red FTDI thing) weighs about 10.9 grams. I think we can reduce that to maybe 4 or 5 grams- the laser module weighs 1.9 grams and is the limiting factor.

The principle of operation is straight forward- the laser is mounted horizontally from the image sensor by a known baseline distance. The Arduino first turns off the laser and then grabs a small image (3 rows of 32 pixels in this implementation). Then the Arduino turns the laser on and grabs the same pixels. The Arduino then determines which pixel experienced the greatest increase in light level due to the laser- that "winning point" is the detected location of the laser in the image. Using this location, the baseline distance, the lens focal length, the pitch between pixels on the image sensor, and basic trigonometry, we can then estimate the detected distance. I haven't yet implemented this final distance calculation- my main interest was seeing if the laser could be detected. The above video shows the system in operation.

In practice, I've been able to pick up the laser point at a distance of up to about 40 feet- not bad for a 2 mW laser. In brighter lights you can put an optical bandpass filter that lets through only laser light- with this the system works at distances of say 10 feet even in 1 klux environments e.g. a sunlit room. If you are using this for close ranges, you can turn up the pulse rate and grab distances at up to 200Hz. How does an Arduino grab and process images at 200Hz? Easy- at 3x32 it is only grabbing 96 pixels!

Views: 58599

Comment by Don Anderson on September 10, 2012 at 9:52am

Geoffery, Which laser were you using in the photo? When measuring from 0" to 40" what resolution do you think you might be able to obtain (2mm increaments)?

Comment by Darren Dickout on November 6, 2012 at 3:23pm

This is a really cool application and something that I can really use.  I am curious about a few things: What is the Sparkfun piece that is connected to the bottom?  Is it a USB adapter of some sort?  Also, would you be willing to share the code for this device? 



Comment by AS on March 11, 2013 at 11:03am

Hi Geoffrey!
Any news on this project?

Comment by Gary McCray on March 11, 2013 at 4:43pm

Just a question really, I am planning on using one of the longest range sharp IR ranging sensors on a servo scanned base to permit low resolution adaptive scanned depth image construction.

The Sharp ranging sensor uses intensity of IR dot reflection to produce a distance calculation.

The Sharp array can work out to 16 feet also and costs $26.00.

The distance calculation decreases in accuracy with distance, but this is true for the camera method as well.

And the update (frame) rate is considerably higher.

This is the Sharp IR sesor I am planning on using: http://www.robotshop.com/productinfo.aspx?pc=RB-Dem-05&lang=en-US

I did also notice that Parallax has a laser ranging camera system that works like yours but it appears to have an abysmally slow update rate of 3 or 4 times per second and it is huge.

I notice that the KickStarter project shows as fully funded by 3 times over that requested as of 6 months ago.

Any news from them?

Comment by Gary McCray on March 11, 2013 at 5:18pm

I found another link to this same rangefinder and one of the responses on it indicated good results using a TAOS now AMS linear array sensor which should actually be a lot easier and faster to decode for the ranging function.

He was only using a 128 pixel linear array here http: //embeddedeye.com/profiles/blogs/11-gram-ardueye-driven-laser-range finder

And he was not using well developed optics and his results deteriorated badly with distance.

But AMS now has a 1280 pixel linear array for under $50.00 and with proper optical design that might provide a considerable improvement in range, resolution and update rate.

Comment by minopausa Ulisse Nobody on June 20, 2013 at 1:16am

Do you think you can measure the distance in a situation like that?

TY 4 your answer.

Comment by Bot Thoughts on June 20, 2013 at 7:24am

@Gary - fwiw the Sharp sensors are on the slow side, about 25Hz is what I think I calculated it to based on oscilloscope observation (I think the datasheet may actually have it specified).

Comment by lesto fante on February 15, 2014 at 6:27pm

Hello, i have a copule of question.

You said you get 200Hz for 96pixel, right? what was themaximum distance and precision?
where you limited by the ADC speed or by the chip speed?
can you put the code, or some capture sample?

great work!

Comment by Kjetil Kjernsmo on May 2, 2014 at 3:14pm

I'm looking for a range finder that could be used for obstacle avoidance for a plane traveling at about 5 m/s around the canopy of a forest. At that speed, the autopilot would be a hurry to ascend if something is detected at a 5 meter range, so it would be extremely welcome if it could be done at a range longer than that. :-) Do you think it, or a 5mW with bandpass filter, could serve that purpose? I was also thinking, if you increase the baseline, e.g. mount the laser and the camera at each wingtip, could that improve the long range obstacle detection capability?

Seems that Kickstarter LIDAR project didn't really get anywhere, even though it was funded? Also, it doesn't seem suited for my scenario.

Comment by Bjorn Sorenson on October 11, 2015 at 8:37pm

Hello @Geoffrey L. Barrows 

I know its a couple of years old but have you ever made this project Open Source? I saw that you mentioned you'd do that here, I would love to have an example of the code and play around with it.

Thank you!


You need to be a member of DIY Drones to add comments!

Join DIY Drones

© 2019   Created by Chris Anderson.   Powered by

Badges  |  Report an Issue  |  Terms of Service