LiDAR Topics
The lidar topics are managed by the lidarpub service and handles interfacing with a connected lidar to produce lidar point clouds, reflectivity maps, and depth maps. The service can cluster the point cloud and remove the ground plane before clustering, and publishes the static transform from the base_link frame to the lidar frame on the tf_static topic.
- Robosense E1R
- Ouster OS1
- DBSCAN and voxel clustering
- IMU-guided ground plane filter
The lidar topics are published under the lidar namespace and offer the following sub-topics: lidar/points, lidar/reflect, lidar/depth, and lidar/clusters. The sensor type, the density of the lidar points, the frequency of updates, the field of view, and the clustering are configurable through the lidarpub service, see the LiDAR service configuration documentation for details. Topic names are relative to the device hostname namespace.
lidar/points
The /lidar/points topic publishes information about the lidar points using the PointCloud2 schema. The point cloud will have the fields x, y, z, and reflect.
| Field Name | Datatype | Units | Notes |
|---|---|---|---|
| x | float32 | m | Represent XYZ location of the point |
| y | float32 | m | Represent XYZ location of the point |
| z | float32 | m | Represent XYZ location of the point |
| reflect | uint8 | Intensity of reflected LiDAR beam |
The XYZ coordinate system follows the standard ROS convention of x forward, y left, z up. Note that the Ouster lidar frame is rotated 180 degrees from the base_link frame as its 0 degree point is at the rear connector, the transform published on tf_static accounts for the mounting.
| Usage | Link |
|---|---|
| Web UI | LiDAR Page |
| Foxglove | PointCloud2 Example |
| SDK | LiDAR Points Example |
lidar/reflect
The /lidar/reflect topic publishes the reflectivity map using the Image schema. The encoding of the image is mono8. The value of a pixel is the reflectivity of that point. The image width depends on the number of columns configured on the lidar. These images are published for the Ouster sensor.
| Usage | Link |
|---|---|
| Web UI | |
| Foxglove | Image Example |
| SDK | LiDAR Reflect Example |
lidar/depth
The /lidar/depth topic publishes the depth map using the Image schema. The encoding of the image is mono16. The value of a pixel is the distance from the lidar to the point in millimeters. The image width depends on the number of columns configured on the lidar. These images are published for the Ouster sensor.
| Usage | Link |
|---|---|
| Web UI | |
| Foxglove | Image Example |
| SDK | LiDAR Depth Example |
lidar/clusters
The /lidar/clusters topic publishes the lidar clusters pointcloud using the PointCloud2 schema. The point cloud will have the fields x, y, z, cluster_id, and reflect.
| Field Name | Datatype | Units | Notes |
|---|---|---|---|
| x | float32 | m | Represent XYZ location of the point |
| y | float32 | m | Represent XYZ location of the point |
| z | float32 | m | Represent XYZ location of the point |
| cluster_id | uint16 | 0 means not clustered. Otherwise same cluster id means same cluster | |
| reflect | uint8 | Intensity of reflected LiDAR beam |
The XYZ coordinate system follows the standard ROS convention of x forward, y left, z up. Note that the Ouster lidar frame is rotated 180 degrees from the base_link frame as its 0 degree point is at the rear connector, the transform published on tf_static accounts for the mounting.
This topic is only published if the lidarpub service is configured with a clustering algorithm.
| Usage | Link |
|---|---|
| Web UI | LiDAR Page |
| Foxglove | PointCloud2 Example |
| SDK | LiDAR Clusters Example |