A proposal for a LidarScan sensor message

Here is my initial draft for the proposed message:

The following PR provides ouster-ros implementation of the lidar_msgs::LidarInfo and lidar_msgs::LidarScan

This demo is a complete working example but there are still plenty of TODO(s) which I’ll try to summarize:

  • Use default SI unit (meters) for the range data.
  • I am considering to have LidarInfo provide per pixel angles (ScanPattern) instead of the current implementation which provides angles per row .. this will signifitcantly increase the LidarInfo message size but is more generic and can support other Lidar sensor types.
  • I am yet to implement the association between LidarInfo and LidarScan messages, the current implementation doesn’t handle changes to LidarInfo.
  • There is a minor problem with the current LidarScanToPointCloud method implementation in which it expect the LidarScan message in the staggered form. However, this contradicts with the expectation for the consumer with LidarScan 2D channels. So I need to re-work the code a bit such that the driver publish destaggered (corrected) LidarScan message that can be readily passed to 2D operator while maintaining the ability to convert the same message to a PointCloud with no artificats.
  • I still have work to be done to show case the dual utilization of the LidarScan message for detection and representing the results as 3D PointCloud(s). The example simply plots 2D channels and the 3D PointCloud with no links.
  • Finally, I want to provide a workspace which includes all the required packages for those interested in contributing or reviewing the proposal and trying it out.

Future Work:

  • Check if we can leverage some of the image_transport utilities to compress LidarScan message during transport.
  • Address the copying when exposing LidarScanToPointCloud method to the python.
4 Likes