This project is to build a motorized gimbal mount to convert a laser distance module into a 3d LIDAR.

Public Chat
Similar projects worth following
The idea of this project is to use cheap laser distance modules to create 3D scans of the room. This can be done by rotating the laser distance module on 2 axis with the sensor centered on the junction of those two axis (aka: the sensor is on the center of rotation so it's always at the origin). The main goals of this project are to improve the means that cavers use to survey and map caves as citizen scientists. This device will also be useful for volumetric calculations, detecting changes over time, and may be useful in non-caving fields of study. The black and white header image for this page is an example LIDAR scan made using the Focus3D (more photos in gallery). From these LIDAR captures we are able to see how the cave formed, detect water patterns, identify rocks/mud/debris, and overlay the cave on a surface map.

Cavers are one of the few under-funded groups of people who still do mapping and surveying using old civil engineering tools. In 2016 the most common tools for cave mapping are the notebook, tape measure, and Suunto tandem (compass and clino). Some groups have upgraded to using a DistoX which is a modified laser distance meter with compass and clino readings. And a few of those have upgraded to using a PDA (yes...they still sell these on eBay) or tablet for sketching the map.

A few groups of cavers have begun using LIDAR to map caves. But this costs around $1k per weekend to rent the equipment or $40k+ to purchase the equipment. This price range is far outside of the realm of local citizen scientists.

The idea for the low cost LIDAR Gimbal originated with the Lidar Lite v2. This module costs $115 and is capable of 500 readings/second. For a LIDAR which has a physical range of (270° / 2) x 360° (thanks to Alexander for the correction). It takes 48600 samples to capture a 1° scene. For 1° resolution it should take 1 minutes 37 seconds to make a capture. For a 0.5° resolution it should take 6 minutes and 30 seconds. (The SF-30B has been scrapped because the 10cm readings were not as accurate as I wanted, the sensor was damaged, and the lidarlite3 is much cheaper),

Options for Sensor Include:

LIDAR-Lite 3
Field of View0.2 deg?
Accuracy+/- 2.5cm
Range0 - 40m

plain - 13.61 kB - 06/27/2016 at 11:26


plain - 34.32 kB - 06/24/2016 at 19:56


View all 10 components

  • Electronic mock-up

    caver.adam08/11/2018 at 03:29 0 comments

    Put the electronics into headers on a protoboard and put them in the case. I’m concerned that the second board is too close to the motor drivers. I think the motor drivers can’t be placed on headers and will have to be soldered in even for the prototype stage. Unfortunate, but I’ll just have to commit sooner than planned. Also having trouble with the teensy damaging the headers. Looks like I might be going hard soldered quickly. 

  • Updated yaw motor mount works!

    caver.adam08/10/2018 at 06:34 0 comments

    got the 3d printer repaired and printed the new yaw motor mount. Fits like a charm and the worm gear makes a great connection. 

    Next step is to start assembling the circuit and simultaneously finishing the remaining non-functional parts such as the battery box and the lid for the whole case. 

  • Re-designed the yaw motor mount

    caver.adam08/06/2018 at 15:26 0 comments

    Fortunately, I was able to re-design the yaw motor mount. I designed the part originally from the Amazon description of the worm gears that I used...and I messed up the dimensions. Didn't figure it out until I had printed the main box for the project. Fortunately, I left some wiggle-room in the box so that I can just tilt the motor 7 degrees and fix spacing problem. Planning to print/verify the fix tonight. 

  • Delayed again

    caver.adam07/12/2018 at 19:49 0 comments

    Ugh. Took a delay because we were on a 2 week vacation and then got back and got sick. I'm missing this project, but there's no way I'm braving the 90F / 60%RH in the Garage while I'm sick. 

    I seriously want to get these motor shafts replaced and the replacement nema10 mount printed.

  • One small step back.

    caver.adam06/12/2018 at 03:48 0 comments

    Started to assemble and apparently I should've waited for my amazon order of the worm gear to come in so I could measure it...doesn't quite fit. Not a large problem. Should take about an hour to redesign the yaw motor mount and another hour to print it. Should be fixed by the weekend.

    Also having trouble replacing the rod in the stepper motor. Man those pieces are on snug. Need to figure out a better way to get them off. 

  • Hardened Steel is Hard to Cut

    caver.adam06/11/2018 at 13:43 0 comments

    So, it turns out that I don't have a tool capable of cutting 5mm hardened steel rod. Admittedly, most of my tools are for electronics (or basic woodworking and home repair). I've got a family member nearby that will let me use his Dremel.

    Otherwise, I've printed all the body elements required to make a functional skeleton of the open lidar. Once I get the rods cut to length I can retrofit my stepper motor and get the skeleton assembled. Really want to get the skeleton done. I still need to print lids and the battery box, but those won't stop the device from working.

    I still need to finish the new schematic that uses the Teensy 3.5, but the Teensy has so darn many pins that you can practically throw a wire at it from across the room and be plugged into a pin that will work. That's going to make it a lot easier to get a good layout. I've looked at the schematic and it's going to be pretty easy to get a clean layout with the new circuit.

  • First 3D Print

    caver.adam05/31/2018 at 10:58 0 comments

    Set up the printer to print PETG and got the first component off. Still need to dial in the settings because I’m getting a bit of stringing, but the roll motor mount is serviceable. The stringing is making it hard to print more than one part at the same time though.

  • PETG or Nylon?

    caver.adam05/29/2018 at 21:16 0 comments

    Need to figure out what material to use to print the body for the Open Lidar. My printer doesn't have an enclosure, so there's some extra work involved in getting Nylon to work. Guess I'll try PETG to start and if it doesn't work I'll switch to Nylon.

    Still need to make a case for the batteries, but I can design that while I'm waiting for the other prints...

  • 3D model update

    caver.adam05/29/2018 at 01:40 0 comments

    I've updated the 3d model files with a better design. This design has room to add magnetic rotary encoders on both shafts. The motor mount for the NEMA 11 yaw motor has been turned into a stand alone piece so that the motor can be hooked up and then the whole piece connected to the main body. There are also holders for the yaw bearings that are spaced so that a pair of washers and the worm gear assembly will hold the bearings in place and prevent the shaft from shifting up and down. Some minor improvements were made to the hole spacing for the battery pack (and the case for the battery pack is not yet fully designed). The lidar lite mount has been updated to include a cover to protect the lidar module a bit more. 

    Updates are available on GitHub.

  • Reboot!

    caver.adam05/21/2018 at 03:13 0 comments

    It's time to update and continue this project. Since my last update I've started and finished my seconds Master degree and started a new career... hence the big delay on this project. But there are also some new products available since I started this project that are going to make it a lot easier.

    New plan for this project is to 3d print the body that holds the parts. The body itself is estimated at 150g of PLA based on the newest concept. Going to add a bit more than that by the time I get the mount designed to hold the lidar module. I've added the first edition of the stl files but I haven't had a chance to print them and check for fit yet.

    Another update is that the newest lidarlite module is out and is capable of 1k readings per second at better than centimeter accuracy. I've got the lidarlite v3 (capable of 500 readings per second) to get started with and will upgrade once I have everything else working.

    Also, I'm going to be using the Teensy 3.5 which has a boatload of memory on board (which was a major problem with my previous design) and also has an SD card mount ready to store files. 

    I've obtained some better motor drivers from Pololu because the old ones got rather hot and were quite noisy. Better to spend a few extra bucks on better drivers.

    I've left space in the case to add a rotary encoder like the mechaduino. I'm hoping I won't need to use one and can save the $50 bucks...but I wanted to have the option to upgrade later.

    I've also changed the yaw motor to connect to a worm gear so that the whole unit doesn't spin like crazy when the motor is off. It should also help the motor generate the torque needed to turn the entire unit on the base station. The other motor shouldn't need the help because it's only controlling the tilt of the lidar module.

View all 51 project logs

  • 1
    Step 1

    Assembling the Gimbal

    Note: These instructions will soon change. A rough draft for a laser cut version of the project is in works. This will emulate the way that many acrylic 3d printers are made for easy assembly.

    Original gimbal instructions:

    To start with, it is necessary to print out the gimbal vector SVG file that has the dimensions for the project. Make sure to print this file at normal size. To compare this, the large platform is 6 inches. Measure this platform carefully to make sure your printed copy matches that scale. The file was made to match a 12" by 12" sheet of plastic. You may need to use more than 1 sheet of plastic to print the file or you may need to print individual shapes onto pieces of paper. Alternatively, you can simply use the file as a template and hand measure all the pieces. Or you can laser cut the file.

    Next, it is necessary to cut out the plastic pieces to the specifications in the file. The original project was done with a jigsaw. Any sort of cutting method will work.

    Next, drill all the holes that are specified. The first version of the file does not have the drill hole sizes indicated. A tap and drill bit guide will indicate which size holes to use for the screw holes. The motor shaft holes need to be greater than 7mm to prevent friction. To drill motor mount holes print out a nema 17 layout and tape it to the plastic piece to be drilled making sure to center the motor shaft very carefully. Then drill using a 3mm bit.

    After drilling holes I glued pieces together that needed to be glued. This includes the base that connects to the Tripod and the vertical uprights.

    After the glue was set I tapped all holes to the right thread. Then I assembled the device.

    [Need updates but will probably wait until laser cut version of mount is designed]

  • 2
    Step 2

    Setting the Stepper Driver Current

    If possible, it is recommended to wire the stepper driver on a breadboard to set the current before you solder the driver into the project. It is best to solder in the stepper driver to the main board after soldering in the 5V regulator, but before soldering in any of the other components. This way, if you make any mistakes in orientation of the chips you will not burn out any of your sensitive components. Use a multimeter to make sure that there is not any leakage of 12 volts onto any of the 5 volt traces.

    See: Pololu Instructions Link

    See: Instructables Instruction Link

    I am successfully running my motors with a Vref of 0.60V with my 1.2A 15.6 motors on a 12V power supply. This project does not require an exceptional amount of current to function. The yaw motor appears to require at lest 1ms movement time between each eighth step in order for the motor to move when commanded. The pitch motor is currently running with a 250us delay, but I haven't tried less than that yet.

  • 3
    Step 3

    Setting up the bluetooth module

    Tools: TTL (or FTDI) cable, TinySine Bluetooth Module, computer with usb port, serial monitor

    First things first, the bluetooth module comes with a default BAUD rate of 9600. Yeah, that's not going to do. So lets speed things up.

    To start this we begin by wiring the bluetooth module to our USB to TTL converter (I'm using an FTDI converter that also programs the Trinket Pro). The wiring is VCC->VCC, GND->GND, TX->TX, RX->RX. Seems obvious, but this is NOT how we will hook it up to the Arduino later.

    Next, plug the USB cable in and the bluetooth module should start flashing.

    Open a serial monitor program (I'm using the one built into the Arduino software) and make sure the port is set to the right one. For the settings the BAUD rate needs to be 9600 and the monitor needs to be set to "No line ending".

    Send the "AT" command to see if it is working. The module should reply "OK".

    Send "AT+BAUD?" to see the current BAUD rate. It should return a "2" which corresponds to 9600 [from the datasheet].

    Send "AT+BAUD6" to change the BAUD rate to 38400. Re-power the module for the settings to take effect. You can use "AT+RESET".

    Set your serial monitor to 38400! Otherwise you won't be able to talk to the module anymore. (Note: I had to set the rate of my serial monitor, close the window, and re-open the window).

    Send "AT" and make sure it responds back "OK".

    If you want to set a BLE password or change the EDR password you can do that now too.

    EDR: "AT-PINEmypassword"

    BLE: "AT-PINBmypassword"

View all 10 instructions

Enjoy this project?



caverjohn wrote 01/04/2017 at 16:29 point

Hi Adam, I stumbled across your project while googling "Lidar-Lite v3".  I just received one of those sensors yesterday. I hope to someday use it build a scanner for cave mapping similar to your design. I'm also a caver in the Louisville area (NSS40959RL). I'm very impressed with your work on this project.

  Are you sure? yes | no

Alexander wrote 07/13/2016 at 16:23 point

It is also, as globe. We have latitude and longitude.

By rotating to 360 deg of motor1 we get parallel. Trajectory of point is circle. By upping motor2 to 10 deg, we get increase of latitude by 10deg  and had another circle. So by changing from -90 to +90 of motor 2 and full 360 deg rotate of motor1 we get all sphere.

  Are you sure? yes | no

caver.adam wrote 07/13/2016 at 17:30 point

Ah. Thanks! Oops! My flow chart had me taking the same point twice! You're a lifesaver.

  Are you sure? yes | no

Alexander wrote 07/13/2016 at 13:12 point

Hello, from Russian caver . I am think you mistake: "is capable of 500 readings/second. For a LIDAR which has a physical range of 270° x 360° it takes 97,200 samples to capture a scene"

You must take 360 deg  to 180 deg range for full 360 sphere, so 64800 samples and 130 sec for 1 deg resolution.

  Are you sure? yes | no

caver.adam wrote 07/13/2016 at 14:10 point

My 270 degree figure comes from the fact that I can't shoot through the base of the LIDAR to view the ground. Ideally I would want to capture 360x360 degrees.

But this does bring up an interesting point. For instance, when the sensor is pointed straight up (in the direction the base motor points) the device will be pointing at the same point as in the previous 270 degree scan of the carriage.  This means we will have 360*resolution measurements of the same point. Similarly, the closer we are to the poles, the closer together the scan points will be. This is something that can be worked on later to decrease scan times. I've also considered using a variable scan resolution based on distance. 

  Are you sure? yes | no

caver.adam wrote 07/13/2016 at 14:11 point

If I'm confused, please feel free to shoot me a diagram. Thanks!

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates