As part of of some of my side projects over the holidays, I wrote a ROS2 driver for the Ouster series Lidars, OS-1. Given they also have the OS-2 coming out soon, I designed it to be very modular in how it interfaces with the sensor and processes data so it can be easily extended to that when its SDK comes out. Conceptually, it could be used as a generic-lidar-driver framework from multiple lidar vendors, but that’s not the intention (currently).
Right now it does a few useful things:
- Gives you out a pointcloud (obviously), at 10 or 20hz.
- Gives you out the Range, Intensity, and Noise images, since the Ouster lidars take measurements by encoder ticks, it gives you a regular array of values you can treat as an image, at 10 or 20hz.
- Gives you Reflectivity image (new to ROS2 drivers), at 10 or 20hz.
- Gives you out a LaserScan message of the zero-altitude beam on the lidar, which can be useful for 2D localization, mapping, data processing, etc (new to ROS2 drivers). If there are no beams at exactly
0.0, it will use the closest ring. On the OS-1 64 layer, that’s
2.5degrees, which I think is sufficient to treat like
0.0, at 10 or 20hz.
- IMU data from the on-board IMU at 100hz.
- A reset service to reset the sensor communication network in case of failure or disconnect (new to ROS2 driver)
- Makes use of the ROS2 lifecycle nodes for deterministic bringup and shutdown. Also made a substantial attempt at creating no run-time allocations in activate mode (not yet verified) so it can be suitable for safety critical applications. Also all the stuff needed for Component nodes, but right now its not playing well with templating so that’s not active as of today.
- Easy (I mean, really easy) additional data processing modules. Adding a new module takes less than 2 hours to take in the sensor packets and create the
- Pretty readme file with pictures and instructions from out-of-box to fully-functioning.
Take a look and hope its useful! Happy Roboting!
PS Quick plug for my new Youtube channel Robots for Robots, I’ll be going over these drivers in more detail on an episode in the future.