Closed
Description
Checklist
- I've read the contribution guidelines.
- I've searched other issues and no duplicate issues were found.
- I've agreed with the maintainers that I can plan this task.
Description
Currently, individual LiDAR drivers have differing implementations on how timestamps are applied to pointcloud messages.
In the commonly used Velodyne and Hesai drivers, the pointcloud message timestamp comes from the timestamp of the first point of the pointcloud. This has some drawbacks:
- When there are no points in the pointcloud, the message header behavior is undefined
- When there is a blockage or other cause of no points to be returned at the start of the scan, the pointcloud message timestamp will be later than expected (the time between consecutive pointcloud timestamps will not necessarily be constant)
- Unpredictable pointcloud message timestamps may cause downstream synchronization tasks to fail or give incorrect correspondences
Purpose
Determine a policy for how pointclouds should be timestamped, considering downstream perception tasks and synchronization.
Possible approaches
- Include parameters in the LiDAR drivers to enable the user to choose how timestamps are added to messages
- Use the pointcloud's first packet timestamp for the message header timestamp
- This may not coincide perfectly with the start of the scan, as packets contain multiple points that may result in the pointcloud start being somewhere in the middle of the packet
- Use the timestamp from the first point even when no point is present (azimuth and ring data is still in the packet even when there is no return)
- Also consider options to timestamp at the end of the scan, or middle of the scan to ease synchronization with other sensors
Definition of done
Definition of a LiDAR pointcloud message timestamping policy for Autoware.
- Determine the desired behavior for reliable operation in downstream tasks
- Implement the timestamping methodology in the Hesai, Velodyne, and other supported LiDAR drivers to align with the defined policy
- Test operation in pointcloud preprocessor and perception tasks (especially where synchronization is required between sensors)
Activity