Cheap laser distance sensor/meter

Hello Arduino folks!
I've just started with a SLAM robot hobby project and I'm looking for a good and not too expensive distance sensor. I've already tried the Maxbotix ultrasound sensor and I've just realized that the measuringbeam gets to wide when I'm measuring at around 1 meter.
Now I'm looking for some kind of laser distance meter instead but as far as I'm concerned they are very expensive if you would like to have a range from around 10 cm - 500cm?

If you look at the sensors at robotshop like these ones http://www.robotshop.com/high-end-lasers-obstacle-detectors.html?lang=en-us, then the price goes high.
There are several hardware stores in my country though which sell cheap distance laser meters considering the accuracy and the measuring spectrum.
like this one for example Clas Ohlson.
I would like to ask you guys why these kind of laser distance meter like the ones from Cocraft are so cheap and why can't I buy one of those and pick out the laser meter and then integrate it with my arduiono(do you think that even would be possible?).
Or is there anywhere I can buy that kind of laser distance meter without having to pick it out myself and figuring out which wire is doing what?

Thanks so much! I really appreciate you guys who answer my sometimes childish questions, I really do :slight_smile:
//Archelon

The difference in price between first and second links, is due difference in method of measurements. "Scanning" rangefinders, like a radars, outputs wide sector of distances, some of them gives a full 3D picture. Cheep one measure only distance to single spot/dot.
Parallax sensor I only can see in first link , works as single dot device.

why can't I buy one of those and pick out the laser meter and then integrate it with my arduiono(do you think that even would be possible?).

Try it. I'd be greatly impressed, if you succeeded.

Or is there anywhere I can buy that kind of laser distance meter without having to pick it out myself and figuring out which wire is doing what?

Parallax listed on robotshop is only available laser range finder for arduino platform I'm aware of. You can build your own, look for details / code in this link: http://coolarduino.wordpress.com/2011/12/07/arduino-laser-3d-tracking-range-finder/

Magician:
The difference in price between first and second links, is due difference in method of measurements. "Scanning" rangefinders, like a radars, outputs wide sector of distances, some of them gives a full 3D picture. Cheep one measure only distance to single spot/dot.
Parallax sensor I only can see in first link , works as single dot device.

why can't I buy one of those and pick out the laser meter and then integrate it with my arduiono(do you think that even would be possible?).

Try it. I'd be greatly impressed, if you succeeded.

I have after some hours of googling I found this component http://porcupineelectronics.com/Laserbotics.html that can convert the data from a Fluke 411D distance meter (Laser Distance Measurer Meters | Fluke Laser Measuring Tools | Fluke) to a computer or via Serial communication to an arduino. What do you think about that option?
I'm not so familiar with serial communication yet but I'll manage it I think. :slight_smile:

It may work, though price of interface board is more than range finder itself. My guess, interface board software decodes LCD display messages, leaving laser sensor / processing out of the picture. Probably, there is no easy way to hack a core. Following their path, you even don't have to open range finder itself, just put a web-cam above and make video recognition from LSD display, I think it would be possible for $150 project budget, but I would not call it "integration".

There aren't many options out there for low-cost 2D LIDAR systems. The difference in cost generally is due to a number of reasons; for instance, the expensive sensors you see out there can scan very quickly, spit the data out quickly, work well in a variety of lighting conditions (up to and including daylight), use high-quality optics and lasers (plus IR filters and other systems to remove noise caused by other IR sources that can drown out the laser light), and they also generally use a form of interferometry to calc the distance (basically, you modulate the beam with a wave in the GHz range, and compare the outgoing beam with the reflected version - the difference between the waves is proportional to the distance measured - but you need really high speed timer circuitry for this). Some high-end sensors (so called LIDAR cameras) use time-of-flight and special high-speed optical sensors and timers to measure the time it takes from laser emission to reception of the reflected beam.

All of that adds up to dollars. Every other low-cost method (including "real" - vs cheap "ultrasonic" - laser distance measuring devices) uses triangulation to measure the distance. You have a laser, then you have a sensor - usually a linear CCD or similar array, and the baseline between the two is known; using this information and some simple trig, you can calculate how far away an object the laser reflects off is by where the beam is detected on the linear array.

This method suffers from low accuracy (because you can only get so many pixels in a linear array), and the need for the device to be manufactured fairly well so that the sensor can "see" what the laser is aimed at. Even so, it tends to be a cheap way to implement a range finder. That said, here's a breakdown:

  1. A SICK, Hokuyo (or other expensive vendor) 2D LIDAR (~ $1000.00+ USD, depending on how you source it)
  2. Ripping the sensor out of a Neato XV-11 vacuum cleaner robot and "hacking it" (~$400.00 USD)
  3. The Parallax 1D LIDAR sensor (~$130.00 USD) - mount on a servo to pan it, for 2D sensing (somewhat slow)
  4. Homebrew (??? USD)

Item 1 is basically out of most people's budget; you've already indicated it isn't for you (but hey - I have seen sensors of this nature, in used condition, go for as low as $800.00 on Ebay - so maybe you might consider it if you want something much better). Likely - item 2 will be your best bet; there are a few sites out there that detail how to "hack" these and use them with an Arduino and/or other microcontrollers. You basically do some simple serial comms with them, and they spit out an approximate "360 degree" measurement list; whether the sensor works well in daylight is unknown (but I would guess: not very likely).

Item 3 is a good deal because it basically does what most homebrew systems do - via a "parallax" method as described above, and does the processing of distance measured and such on-board, so you don't have to do much to interface to it. Add a nice servo to pan it around (mount it with the long-axis "up" to keep the servo mass down), and you can have a nice and fairly fast 2D LIDAR system (certainly at least as fast as an ultrasonic sensor with the NewPing library - but probably much faster is possible).

Lastly - Item 4 - homebrew - is an option. What you are suggesting with the serial communications system is certainly possible; I would see if the serial output is already in some TTL serial (5V or 3.3V) format, first (instead of going through a special interface cable). How fast you can make those measurements, though, would be a question to find out about.

Or - you can go "true homebrew" - here's a couple of ways of doing it - the first requires a PC and a webcam, the second can be done (in theory) with an Arduino or similar, but is not for the faint of heart, and the third can definitely be done with an Arduino. All use variations on the parallax geometry measurement methodology, in different forms (the second being the most complex - while the third is interesting in that it scans the laser, and keep the single phototransistor stationary - in effect, giving you a virtual linear "ccd" array):

A Real-time Laser Range Finder (you may have to refresh this one a couple of times to get it to fully load all the images)

http://letsmakerobots.com/node/2651

Hope these links help - I've answered this question so many times, and nothing has really changed much over the last couple of years; I think I am going to make a post of this on my web site, just so I can point there in the future...

Well - I went and wrote up an article for my website. It's basically the same as above, but I did add some extra links for other methods/ideas - so you may want to check it out:

phoenixgarage.org || Low Cost LIDAR and Laser Range Finders: Where Are They?

Hope this link doesn't offend anyone (mods, let me know and I'll remove it)...

:slight_smile:

Magician:
It may work, though price of interface board is more than range finder itself. My guess, interface board software decodes LCD display messages, leaving laser sensor / processing out of the picture. Probably, there is no easy way to hack a core. Following their path, you even don't have to open range finder itself, just put a web-cam above and make video recognition from LSD display, I think it would be possible for $150 project budget, but I would not call it "integration".

That sounds right! That's a good idea to put a webcam on top of it and I think it would work out quite good but the problem is that I just want to use the arduino and not a computer to get the distance data. As far as I'm concerned arduino can't handle graphic data that well :slight_smile:

Thanks for your reply cr0sh! You give a few options which sounds great but I'll think I'll go for the laser distance meter FLUX 411D and the onterface board I talked about earlier. I think the total cost for that "system" would be around 350 USD and I suppose it would work just as fine as the vaccum cleaner option if I attach it to a servo. I do also think it will work quite well in daylight as well, what do you think?
And while I'm writing I must ask you cr0sh, you wrote this

homebrew - is an option. What you are suggesting with the serial communications system is certainly possible; I would see if the serial output is already in some TTL serial (5V or 3.3V) format, first (instead of going through a special interface cable). How fast you can make those measurements, though, would be a question to find out about.

what do you mean by TTL serial?
in the interface board data sheet (http://porcupineelectronics.com/uploads/LR3_Data_Sheet.pdf) it says that the RX and TX uses 3V signaling. does that mean that I have to power the arduino in some special way?

I just want to use the arduino and not a computer to get the distance data. As far as I'm concerned arduino can't handle graphic data that well

Right, interface web-cam to arduino would be problematic. Same time I can't imagine application where arduino would need +-3 mm distance measurements data over distance 50 m, plus 2D. There is no memory even to keep this information, not to do anything useful.
I also have no clue, why this guys use 2D scan (using complex and high price mechanical hardware) for vacuum cleaner, when for simple obstacle avoidance you only need couple laser pointers ($2) and video cam (could be low as $10).
http://coolarduino.wordpress.com/2012/07/28/visual-navigator-making-it-mobile/

Archelon:
Thanks for your reply cr0sh! You give a few options which sounds great but I'll think I'll go for the laser distance meter FLUX 411D and the onterface board I talked about earlier. I think the total cost for that "system" would be around 350 USD and I suppose it would work just as fine as the vaccum cleaner option if I attach it to a servo. I do also think it will work quite well in daylight as well, what do you think?

I can't say anything as far as whether it would work well in the daylight or not, but it will probably be at least as good as any of the other low-cost options. It does say it's designed for outdoor use, so maybe it will work OK.

Likely, it will work better for distance than the XV-11 sensor (it's distance is limited), but I doubt you'll get the same speed; the XV-11 spins 360 degrees quite rapidly (I think it can scan 10 full turns a second or so?); whereas that Fluke meter is going to have quite a bit of mass to move back and forth. I guess it will depend on how many scans you need and how fast your robot will be moving. There is also the possibility that it might be inaccurate (?) at close ranges vs. longer ranges. Something to keep in mind.

Archelon:
And while I'm writing I must ask you cr0sh, you wrote this

homebrew - is an option. What you are suggesting with the serial communications system is certainly possible; I would see if the serial output is already in some TTL serial (5V or 3.3V) format, first (instead of going through a special interface cable). How fast you can make those measurements, though, would be a question to find out about.

what do you mean by TTL serial?
in the interface board data sheet (http://porcupineelectronics.com/uploads/LR3_Data_Sheet.pdf) it says that the RX and TX uses 3V signaling. does that mean that I have to power the arduino in some special way?

Well - that board runs on 3 volts and outputs a USB signal; given that, it is likely that the meter itself is a 3.3 volt TTL logic device (that is, 3.3 volt = HIGH and 0 volt = LOW; the Arduino is a 5 volt TTL device - 5 volt = HIGH, 0 volt = LOW); instead of going from the meter's 3 volt TTL logic to USB then having to (somehow) convert that to something the Arduino can understand, it would be far simpler (assuming you can find the proper interface points) to just tap the 3 volt TTL serial signal from the meter directly, and forgo using the interface board (this would of course depend on what kind of connector and/or how that board hooks up to the meter). There may be some solder points directly on the meter's PCB that you could solder wires to. You would, of course, need to do level conversion for the signals to use them with the Arduino's 5 volt TTL levels, but there are plenty of solutions for that.

Otherwise, that converter board is designed to be plugged into a PC (and likely appears as a virtual COM port to the PC - if you can identify what TTL serial to USB chip it uses, and get the datasheet for that, you might be able to tap the signals easily from there).

The only way you can get away from -not- doing level conversion with the Arduino is to run it on 3 volts; unfortunately (IIRC), a standard Arduino - to run it at 3 volts - means you have to use the internal oscillator @ 8 MHz (which means you can't use the bootloader any more - so you have to program via ICSP).

Magician:
I also have no clue, why this guys use 2D scan (using complex and high price mechanical hardware) for vacuum cleaner, when for simple obstacle avoidance you only need couple laser pointers ($2) and video cam (could be low as $10).

  1. The hardware isn't expensive - Neato, when they announced the XV-11 - said the sensor could be made available to hobbyists for $25.00 (then they reneged on the deal). I doubt the sensor -is- $25.00, but I could see $100.00 - in manufactured quantities for their robot.

  2. They aren't doing just obstacle avoidance. If you have ever watched an XV-11 vacuum, compared to a Roomba it is very, very intelligent. It makes proper "back-and-forth" straight carpet lines, not random patterns like the Roomba. It maps the room; likely it maps the house to a certain level, to know which and where what rooms needs to be done and when. It is apparently doing way more than just obstacle avoidance.

Okay so I have to use some kind of logic level converter ( like this one? https://www.sparkfun.com/products/8745) between arduino and the interface board?
I dont think skipping the interface board is an option for me because then I somehow have to decode the message the meter sends to the display.
but as they write on the Interface board website
"I'm planning on using the LR3 with an embedded microcontroller, is there a more simple way to interface than using the USB port?
The LR3 has a logic level serial port - see the LR3 data sheet (above) for details. You can connect +5V, Gnd, Rx, and Tx to the LR3 and easily interface the LR3 with Arduino, PIC, or any embedded processor that has a serial port. Note: The LR3's serial port is not a full 12V RS232 compatible interface. If you are interfacing the LR3 to a standard RS232 port, then you will need to use a MAX3232 type level shifter."
So I dont have to go through the USB port, I can use the Tx and Rx connections on the interface board.

I'm thinking of putting the meter on a servo and measure the distance every degree or so and slowly build up a map. I now it wont be fast but thats okay, speed costs even more money :wink:

Archelon:
Okay so I have to use some kind of logic level converter ( like this one? https://www.sparkfun.com/products/8745) between arduino and the interface board?

No - I was meaning between the Arduino and the meter - because that is all the LR3 is likely doing. It is (likely) simply doing a similar 3.3v to 5v logic level conversion and then applying that to a serial-to-usb converter chip (that, or the logic level shifting is being handled by the chip as well).

Archelon:
I dont think skipping the interface board is an option for me because then I somehow have to decode the message the meter sends to the display.

I may be wrong, but I don't think that LR3 board is doing anything intelligent - I think all it does is conversion from TTL serial to USB (much like the chip on the Arduino).

Archelon:
but as they write on the Interface board website
"I'm planning on using the LR3 with an embedded microcontroller, is there a more simple way to interface than using the USB port?
The LR3 has a logic level serial port - see the LR3 data sheet (above) for details. You can connect +5V, Gnd, Rx, and Tx to the LR3 and easily interface the LR3 with Arduino, PIC, or any embedded processor that has a serial port. Note: The LR3's serial port is not a full 12V RS232 compatible interface. If you are interfacing the LR3 to a standard RS232 port, then you will need to use a MAX3232 type level shifter."
So I dont have to go through the USB port, I can use the Tx and Rx connections on the interface board.

Well - if it supplies that, and the LR3 doesn't cost gobs of money - then it may be the best bet. I just like to cut out the middle man when I can; I'd take the meter, find the connector, then open the meter up and trace the leads from the connector to some solderable point on the PCB, and hook my own wires in, then add the level shifting (which, depending on whether the communication is bidirectional or not, may or may not even be needed!). If the level shifting components ended up costing more than the LR3, though - it probably isn't worth it.

Archelon:
I'm thinking of putting the meter on a servo and measure the distance every degree or so and slowly build up a map. I now it wont be fast but thats okay, speed costs even more money :wink:

If you can somehow decrease the mass of the unit attached to the servo (like decoupling the sensor head from the PCB in the meter, perhaps), you might be able to scan faster. Another possibility (though this may or may not work well - you might try it, though!) would be to point the meter at a small mirror (best would be an anodized gold first-surface mirror) mounted on the servo, then move the mirror instead of the entire meter...

I'm doing something similar with my Canon DSLR and IR laser, in the dark. How does this work?
It has a range of >100m!

sbright33:
I'm doing something similar with my Canon DSLR and IR laser, in the dark. How does this work?
It has a range of >100m!

I'm not sure I follow what you mean - can you restate the question...?

I'm simply using a 2W IR laser mounted on my T2i Canon DSLR to aid in focusing. It works perfectly in the dark. It's cheap. 100m range. Why can't we do it that way? If I can understand what that way is...

sbright33:
I'm simply using a 2W IR laser mounted on my T2i Canon DSLR to aid in focusing. It works perfectly in the dark. It's cheap. 100m range. Why can't we do it that way? If I can understand what that way is...

I guess we'd have to understand how the auto-focusing of the camera is working; I tend to wonder if it isn't something like the old IR auto-focus systems used on older film cameras?

It's extremely fast. It's also in a cheap Point and Shoot camera. I've been reading. See Phase detection:

hi, I've been reading your post because I want to do a cave 3D mapping and was looking for a cheap and easy solution;
my first idea was same as yours, use a laser distace meter in some way with a computer to read the data and turn it 360 degrees and move tru the cave and later with software make up the map of the cave;
my first idea was to have a long rail that the laser would move along stoping every 20 cm or so to scan and storring or sending back by wifi the data to laptop in control; rail could be shorter or longer by adding more segments and new direction would be mesured the new angle x-y in some way.
I found this simple proyect with a phone cam and laser pointer with arduino that might work fast;

takes 2 photos first with laser of next on and only finds the diference in pixels in an array of 96 pixels, simple, basic, but I think is a good start, the price must be quite low...
I would change this to 2 laser pointers one more separated than the other and turn them on one after the other and take 3 photos and search for the pixel so it gets more acurate in short and large distance... (or maybe I'm wrong..)
and increase the number of pixels, it will need more process power or/and be slower, but will be more exact,
still think that the idea of a rail betwen 2 tripods is the best idea, and in my case for a real error free I would include a real laser distance meter in the base that controlled the exact distance to the milimeter of the 360 laser system on the rail, if it is in a slope it may stop to short or past the 20/30 cm mark, it would make the rail and moving on it less importan if its not exact because the software can ajust the data later!
to move on the rail a one tracktion weel plus 4 more up and a couple under the rail for stability and maybe a weith under if there is to much weit on top (or the batterys under..) (midle tripods can suport the rail by one side while the "train" has the upper structure joined to the under structure from the other side of the rail.
the laser pointer and cam is mounted on an arm in the front that goes near 360 degrees from the left side of the rail (with a couple of swich sensor to avoid nocking into the tripod) to the other side and rest up or down at the end of the turn, and maybe I would do a side scan also, maybe -30 to +30 degrees, so it gets better data, stoping every 10/15 degrees on the turn and doing on every stop of the turn a side scan at maybe -30, -15, 0, +15 and +30, so it can take in the side holes of the cave in a better 3D way! (it would be much much easier if we had the flying drones of the film Prometheus)
PS: or the tripod can have a magnet so the "train" avoid stopping just there, remember with the main laser distance meter at the base we know were it is at milimeter precision,

what do you think of my idea?
thanks for reading me and sorry for any spelling mistake, I'm from the canary islands