Note: This is for the original LIDAR-Lite. For LIDAR-Lite v2, click here: LIDAR-Lite v2.
LIDAR-Lite is a laser ranging module from Pulsed Light, Inc. which is a lightweight and cost effective measurement device. LIDAR-Lite can be accessed over I2C or PWM, for the Jetson TK1 I’ve written a small library for access over I2C. Looky here:
The LIDAR-Lite in the demo was purchased from Sparkfun for about $90 USD.
Background
Wikipedia describes lidar as “a remote sensing technology that measures distance by illuminating a target with a laser and analyzing the reflected light“. There are a variety of different lidars, each with specific uses. This is a large enough field where it’s difficult to summarize it in a short amount of space. Suffice it to say that current lidars can be relatively large, heavy and expensive. As of this writing, it’s not unusual for 3D lidar scanners to be between 5K to 20K USD. These scanners give a 3D view of an entire space within range of the scanner. 2D lidar scanners are generally more compact and less expensive in the 400 to 5K USD range. Think of a 2D lidar scanner as a single point lidar on a spinning turntable, so that you end up with the distance around a space from the center point at a given height. Accurate 1D (point) scanners tend to cost less than 2K USD, but generally cost more than 400 dollars.
The LIDAR-Lite is a Time of Flight (ToF) camera which is a class of scanner-less LIDAR. As you know, the speed of light is constant (here’s some background and a very scientific way of Finding the Speed of Light with Peeps). In a ToF system, a laser generates a pulse of light and a sensor measures how long it takes for that light to reflect back to the sensor from an object that is in the lasers path. Advances in image processing chips over the last decade have enabled this approach.
Description
Some techy stuff from the Sparkfun page that bears repeating:
Description: This is the LIDAR Lite, a compact high performance optical distance measurement sensor from PulsedLight. The LIDAR Lite is ideal when used in drone, robot, or unmanned vehicle situations where you need a reliable and powerful proximity sensor but don’t possess a lot of space. All you need to communicate with this sensor is a standard I2C or PWM interface and the LIDAR Lite, with its range of up to 40 meters, will be yours to command!
Each LIDAR Lite features an edge emitting, 905nm (75um, 1 watt, 4 mrad, 14mm optic), single stripe laser transmitter and a surface mount PIN, 3° FOV with 14mm optics receiver. The LIDAR Lite operates between 4.7 – 5.5VDC with a max of 6V DC and has a current consumption rate of <100mA at continuous operation. On top of everything else, the LIDAR Lite has an acquisition time of only 0.02 seconds or less and can be interfaced via I2C or PWM.
Note: The LIDAR Lite is designated as Class 1 during all procedures of operation, however operating the sensor without its optics or housing or making modifications to the housing can result in direct exposure to laser radiation and the risk of permanent eye damage. Direct eye contact should be avoided and under no circumstances should you ever stare straight into the emitter.
Installation
In this example, the LIDAR-Lite is connected to the Jetson TK1 over I2C.
The LIDAR-Lite is connected to the Jetson J3A1 connector as follows:
LIDAR-Lite 5V to J3A1 Pin 1 (+)
LIDAR-Lite GND J3A1 Pin 14 (-)
LIDAR-Lite SCL J3A1 Pin 18 (C)
LIDAR-Lite SDA J3A1 Pin 20 (D)
There are several ways to actually connect the wires to the J3A1 connector, in this case we use simple female to female jumper wires (0.1″ spacing, 2.54mm pitch – this is standard Arduino size) to attach to the LIDAR-Lite wires, and then connect the jumper wire to a machine pin jumper wire, which is then connected to the Jetson J3A1 connector.
For the demo, I used Adafruit Premium Female/Female Jumper Wires – 40×6″ and 20 CM Machine Pin Wire Kit/10 Pack. This approach may be adequate for some projects, but for more rugged projects you will want to actually take a solder wires to the header pins approach or make a breakout board for the Jetsons’ J3A1 header. Remember that the J3A1 header is 2mm pitch (0.08″) which is slightly smaller than the more standard DIY 2.54mm pitch that something like an Arduino uses. You’ll also want to physically mount the device some where also, fortunately there are mounting holes for that purpose.
Once you have the LIDAR-Lite connected, you’re ready to test. There is a small library written for the Jetson to interface with the LIDAR-Lite over I2C available on Github. First, install some prerequisites:
$ sudo apt-get install libi2c-dev i2c-tools
You can then check to see if the Jetson can detect the LIDAR-Lite address:
$ sudo i2cdetect -y -r 1
You should see ’62’ as one of the entries, which is the address of the LIDAR-Lite.
You can then run the example:
$ git clone https://github.com/jetsonhacks/JHLidarLite.git
$ cd JHLidarLite
$ cd example
$ make
After the example compiles, run:
$ sudo ./example
The sudo is required to access the I2C bus from user space. The example program will show the measured distance, the previous measured distance, and the velocity (rate of change) repeatedly. If the distance is always -1, even after passing your hand over the LIDAR-Lite, this probably means that it is not being recognized by the Jetson.
Summary
There are a multitude of uses for these devices on robotic vehicles. These types of devices can be used as proximity sensors. On a UAV they can be used as a basis for terrain following algorithms. In that case, imagine a quadcopter flying along at a constant height over hills. Note that this is different than maintaining a constant altitude. Many autonomous vehicles use lidar for scanning obstacles in the vehicles path. With the advent of LIDAR-Lite LIDAR is now affordable, even for the hobbyist.
Note: The Jetson is running Linux for Tegra (L4T) 21.3.