LIDAR-Lite v2 Installation and Demo – NVIDIA Jetson TK1

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. The JetsonHacks Github repository contains a small library for accessing the LIDAR-Lite v2 over I2C. Looky here:

The LIDAR-Lite v2 in the demo was purchased from Sparkfun.
13680-03

Background

Earlier this year, we covered the LIDAR-Lite v1 installation. Refer to that article for a quick background on LIDAR and the device. Recently, a new and improved version was introduced. A summary of the new goodness taken from the Sparkfun website:

Each LIDAR-Lite v2 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 second version of the LIDAR-Lite still operates at 5V DC with 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.

The LIDAR-Lite v2 has received a number of upgrades from the previous version. With the implementation of a new signal processing architecture, LIDAR-Lite v2 can operate at measurement speeds of up to 500 readings per second offering greater resolution for scanning applications. Additionally, the LIDAR-Lite v2 has had its I2C communications improved to operate at 100 kbits/s or 400 kbits/s with you, the user, able to assign your own addressing! Just in case you are wondering: yes, the LIDAR-Lite v2 is compatible with its previous version in all primary functions and their compatibility will extend into the next version and beyond.

LIDAR-Lite v2 Installation

The LIDAR-Lite v2 runs on 5V, the I2C signals are 3.3V. Wiring to the Jetson TK1 is straightforward. In the video:
Jetson-LidarLite_bb

SensorPinoutI2C

The LIDAR-Lite is connected to the Jetson J3A1 connector as follows:

LIDAR-Lite v2 5V to J3A1 Pin 1 (+)
LIDAR-Lite v2 GND J3A1 Pin 8 (-)
LIDAR-Lite v2 SCL J3A1 Pin 18 (C)
LIDAR-Lite v2 SDA J3A1 Pin 20 (D)

PulsedLight advises using a 680 uF capacitor between +5V and GND.

LIDAR-LiteV2Pict

Software

Note: The LIDAR-Lite V2 software is not backward compatible with the LIDAR-Lite V1.
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 TK1 can detect the LIDAR-Lite v2 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_V2.git
$ cd JHLidarLite_V2
$ 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.

Also included in the examples folder is a little graphics plotting example as seen in the video. It’s beyond the scope of this article to give step by step instructions on how build the program, but the overview follows.

In order to compile the program, you will need to install Qt Creator as described in an earlier article. Using Qt Creator, compile the program contained in the ‘JHLidarLite_V2/example/LidarPlotSketch’. Once the program is compiled, find the executable in the build folder, and from a Terminal execute the application using ‘sudo’.

Note: This software was demonstrated using L4T 21.4.

Conclusion

The LIDAR-Lite v2 is a nice upgrade from the original product. As is usual for most products, the second version straightens out the niggles that the early adopters encountered, and adds useful features to make the product more user friendly and provide a basis for an even better product going forward.

27 Comments

  1. Cool what was the problem with the V1 stuff? I just figured out the motor board and was going to start on this. Good thing I looked on twitter first 🙂

    • Two problems:
      1) There weren’t enough sharks in the LIDAR-Lite v1 video.
      2) The original routine ‘readLidarLite’ used ‘i2c_smbus_read_byte_data’.
      The write/read needed a ‘STOP’ after the write on the v2, so it was changed to:
      i2c_smbus_write_byte
      i2c_smbus_read_byte

        • I think the official part number I use in inventory is:

          Part # MSP001
          Description
          Mako Shark – Plush

          But I think it’s just because I like the word ‘plush’. Oh, and you do have to be a little careful, they do drink like a fish …

  2. This rotating LIDAR-lite looks good to me.
    https://www.youtube.com/watch?v=nIvOWfxFefc

    LIDAR-lite v2 should be able to output one reading per degree at 120 rpm.
    The step motor drive is fine for this task I think.
    Common step motors are:
    1.8 degrees per step at 200 steps/revolution
    0.9 degrees per step at 400 steps/revolution
    0.45 degrees per step at 800 steps/revolution

    A once-per-revolution index pulse from a photo interrupter would be enough for orienting the scan in relation to the robot base.

    Good range and much less expensive than off the shelf scanning lidar units.

    • Looks like a fun and interesting project.

      One thing to remember is that the scanning rate on most commercial units is quite a bit higher over the range of the sweep. In other words, a commercial unit may have readings at 40hz over 270 or 360 degrees. At 120 rpm, using two LIDAR-Lites, that’s about 4hz. This is adequate for some applications, but for a fast moving vehicle it might not be.

      An inexpensive entry in the 2D LIDAR is RPLidar which can run up to 10Hz scan rate with a sample frequency of 2000Hz. It’s in the $400 USD ballpark.

      Most of the more expensive 2D LIDARs rotate a mirror above the electronics, rather than rotate the electronics themselves. That way they don’t have to worry about slip-rings at 2400 rpm. Also, as the speed goes up you have to worry about balancing, shock resistance, and environmental issues and such (dirt and debris getting in bearings is not much fun). Still, they are expensive and with the push in automotive markets to get the price down, one would think that eventually that filters out into the robotics market.

  3. Yes, the 360 degree sweep may be asking a little too much out of this unit.
    A first gen Kinect worked reasonably well as a ROS ‘fake’ indoor laser scanner for me.
    The strength of the LIDAR-lite is it’s outdoor capability in full sunlight.

    Kinect has a ~46 degree field of view.
    Kinect2 and PrimeSense have ~60 degree field of view.
    The ZED stereo camera has 110 degree diagonal field of view. Daytime use only of course.

    The LIDAR-lite v2 spec sheet mentions 750 readings a second.
    The ROS environment, in general, passes data around internally from 10 to 50Hz.
    Lets take 10 to 30Hz as a nice hobby level -outdoor- lidar full sweep return signal frequency.

    The ROS navigation packages would work well with a 75 degree sweep at 10Hz with 1 degree sensing resolution. (I have no ideas on the mechanicals yet!)
    Verifying a 40 meter return in direct sunlight with your LIDAR-lite would be a test I would be very interested in seeing.

  4. Hi,
    I’m interested in the Jetson TK1 projects.
    Could you explain about a C1 680uf capacitor more detail?
    – Why do we need this part to work lidar lite?
    – Where I can buy C1 680uf capacitor?
    – Could you explain specification of the C1 680uf capacitor?

    • Hi Jony,
      The manufacturer recommends the 680uF capacitor. From the part placement, it appears to be acting as a decoupling capacitor. A decoupling capacitor is used to decouple one part of an electrical network from another. One way to look at is is that the capacitor acts as local energy storage for the device so that there is a little reserve available if the current drops momentarily. The capacitor effectively maintains power-supply voltage in the nanosecond to millisecond range during an interruption.

      You can buy capacitors almost everywhere. The one in the video is from here: http://amzn.to/1mtpZ2p
      I happened to have some on hand already, you can resize them for your own project accordingly. Hope this helps.

  5. i want to interface 3 lidars on I2C bus so whats is the pseudo code for three lidars??
    how to assign devide adress for three lidars??
    Do i need to open and close device in a loop or just one time open a devise ??

    • I don’t know what the term pseudo code means in this question.
      One way to attach the Lidar-Lites to a Jetson is with a PCA9544A I2C Multiplexer, which allows I2C dvices to share the same I2C address. The LidarLite v2 also can have it’s address be assigned.
      I’m not quite sure what you mean open and close device in a loop. See the example code for usage.

  6. Lidar lite I2C runs at 3.3v and i want to interface it with jetson tk1 I2C pin at 1.8v so how to interface it.
    Note : I2C pins of 3.3v in tk1 is already used so i can’t use it.

  7. Hi ,
    Great post there, is it possible to interface multiple (3) lidarlite v2 using gpio pins, or PCA9544A is necessary for that.

Leave a Reply

Your email address will not be published.


*