Open Simple LIDAR

Open Hardware scanning laser rangefinder

Similar projects worth following
This is simple enough open source scanning laser rangefinder. It is using triangulation method.
It is based on my previous Lidar projects: ( and earlier lidar versions (in Russian):
Now I want to build really simple and cheap Lidar.
This Lidar can be very useful in robotics - for SLAM and navigation tasks.

This Lidar is using triangulation method for measuring distance to an objects. It can be shown by this picture:

Laser light is reflected by some object. Lens get part of that light and create an image of the laser dot at the image sensor (TSL1401). It can bee seen that the position of that image depends on distance to object.

Estimated Lidar parameters:

5 scans/second;

360 measurements per rotation (1 deg angle resolution);

Maximum distance - 4 m;

Measured accuracy now is - 5 cm at 2 m, 10 cm at 3 m (I hope that it can be improved).

I suppose that the price of all needed parts will be near $35 ($30 without interference optical filter).

P.S. Sorry for my bad English - I am from non-English-speaking country.

Video with testing this Lidar with Hector SLAM: 

Standard Tesselated Geometry - 238.04 kB - 10/01/2017 at 15:26



Encoder ring drawing.

Portable Network Graphics (PNG) - 63.79 kB - 08/03/2017 at 17:10



3D model of the PCB holder.

Standard Tesselated Geometry - 263.01 kB - 08/03/2017 at 17:09



3D model of the laser holder.

Standard Tesselated Geometry - 120.54 kB - 08/03/2017 at 17:09


  • 1 × TSL1401CL Sensors / Image
  • 1 × Slip Ring Used to pass power and signals to rotating scanning head.
  • 1 × Encoder RPI-352
  • 1 × IR filter Interference bandpass filter
  • 1 × Small electrical and mechanical parts

View all 13 components

  • Testing Lidar with ROS

    iliasam09/19/2017 at 18:44 0 comments

    I had instlled my Open Simple Lidar to the old Roomba and tested it with ROS (including Hector SLAM):

    Photo of the lidar installed at the Roomba:

    The left board is Orange Pi PC running ROS nodes (Lidar node, Roomba node, Hector SLAM).
    All robot controlling was manual (using keyboard).

    The resulting map of the rooms:

    This map was created with lidar working at 2 deg angular resolution mode.

    Also I have published Firmware code and lidar ROS node at Github.

    Next step is increasing parameters of Lidar by optimizing  it's firmware.

  • Open Simple LIDAR is fully assembled!

    iliasam09/11/2017 at 19:14 0 comments

    Here is the photo of the assembled LIDAR:

    Last thing that I had installed is the small PCB with DC-DC converter for powering  motor.
    Photo of the installed board:

    This board also simplifies connections between LIDAR's components.

    Photo with the scanning head installed:

    Front view of the assembled LIDAR:

    My next step - write a node for ROS and to test SLAM algorithm.

  • First tests of my Lidar

    iliasam08/31/2017 at 11:47 0 comments

    I have done with basic firmware for my Lidar.

    There were some problem with encoder signals - UART communication produce some electrical noise at the encoder's line.

    Here is a video of first test:

    I decrease angle resolution to 2 deg to increase rotational speed - it is near 5 rotations per second.

    Circles at the "radar" images are 1, 2, 3 m in radius.

  • Testing encoder

    iliasam08/14/2017 at 18:14 0 comments

    I wrote a simple program for testing encoder. It's just blinking led at PCB when there is a hole in encoder disk.

    Photo of LIDAR with big exposure:

  • Assembling LIDAR

    iliasam08/13/2017 at 15:46 0 comments

    Now it is time to final LIDAR assembling.

    I have installed encoder to the "main plate", installed the PCB to the PCB holder, installed slip ring to the PCB holder, solder wires of the slip ring to the PCB pads.
    Photo of the assembled LIDAR:

    Side view:

    I have tested mechanics of the LIDAR - everything is working fine, the eccentricity of the LIDAR rotating head is not very big.

    Encoder is working fine too - oscilloscope shows  a good signal.

    Next steps are assembling small PCB for motor controlling and programming.

  • Assembling LIDAR mechanics

    iliasam08/06/2017 at 18:10 0 comments

    First step is building "main plate" - it is the part that holds ball bearing, motor, and some other parts. This part can be cut from some flat plastic plate. I have used 5mm acrylic glass:

    Drilling 42 mm hole for bearing was a little tricky.
    This part can be printed at 3D printer.

    Next step is assembling everything.

    Photos of assembled mechanics (top view):

    Side view:

    Motor is connected with the PCB holder with rubber belt.

    Down view:

    Here it can be seen method of fixing the PCB holder to the ball  bearing.

    Next step is to fix encoder at the "main plate" and to test it.

  • PCB holder

    iliasam07/30/2017 at 12:31 0 comments

    I have printed special holder for PCB. This holder will be rotated by motor.

    Here is a photo of it:

    The right part is encoder disk.

    PCB holder don't have holes for slip ring wires, so I have to drill two.
    Here is a photo of the PCB holder with the slip ring installed in it:

    Photo of PCB placed to holder:

    Encoder disk is glued to the PCB holder.

  • PCB is assembled

    iliasam07/29/2017 at 18:11 0 comments

    At this step I have printed at 3D printer laser holder. This small part is used to hold the laser at certain position.

    Photo of the laser holder:

    I glued laser to the holder with hotmelt. 
    Photo of the holder with the laser installed:

    Last step is to  fasten the laser holder at PCB. It's done with two M3 screws.

    Photos of assembled PCB:

    Angle between the laser and the lens axis is specially calculated. It must be near 11-12 degrees.

    Optical alignment.

    To get the LIDAR properly working I need to align it's optical elements. First step is focusing lens. Focusing is done by rotating the lens till the image in PC utility don't became fine.

    Photo of not focused image:

    Photo of focused image:

    When the lens is set to best position it must be fixed by special screw which is twisted to the lens holder (it must be special hole in it).

    Next step is laser alignment. It is done by special screw than must be placed at lower hole of laser holder. The purpose  of laser alignment is to get best amplitude of received signal. This alignment must be done at maximum LIDAR's distance (3-4m).

  • Programming and first tests

    iliasam06/30/2017 at 11:00 0 comments

    I have tested all PCB electronics, and everything is forking fine, so I can start to program MCU.

    I have working code for my previous lidar - it was based on STM32F100 and TSL1401.

    So I take code from that project and ported it to new STM32F030 MCU.

    At first step I write testing firmware that capture analog signal from sensor to MCU memory and then transfer it PC by UART.

    I write PC utility that draw illumination level of 128 sensor's pixels:

    Here is a picture with IR laser that I want to use in final design:

    The distance to object (white wall) was near 1.8 m.

    The next step is printing laser holder and mounting it at PCB.

  • Electronics Assembly

    iliasam06/20/2017 at 15:26 0 comments

    Finally I get all electronic parts, so it's time to assemble PCB!

    Photo of components used:

    Most of them are easy enough to solder. The exception is light sensor - TSL1401CL; because pads of this sensor are placed under it's body.

    Photo of assembled PCB:

    Close view of soldered TSL1401:

    Photo of PCB with leans installed:

    3.5 mm Jack connector is used for STM32 programmer connection.

    ST-Link utility found STM32 - so the next step is it's programming.

    Firstly I need to run capturing data from light sensor.

    P.S. I have updated Github files - I added some models, PCB schematic, gerber files.

View all 11 project logs

Enjoy this project?



Daisey wrote 12/28/2017 at 08:58 point

Hi,I sent you a message on youtube channel

  Are you sure? yes | no

Radu Motisan wrote 10/17/2017 at 10:48 point

love this! Congrats 

  Are you sure? yes | no

Kristjan Berce wrote 08/26/2017 at 15:02 point

Would love to see a video of it working soon! :)

  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