No version for distro humble showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.0.0
License Apache 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/WATonomous/wato_monorepo.git
VCS Type git
VCS Version main
Last Updated 2026-08-25
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Aggregates lidar pointclouds into a single merged pointcloud

Maintainers

  • WATonomous

Authors

No additional authors.

lidar_aggregator

Synchronizes, motion-compensates, and merges the three vehicle LiDAR point clouds (center, NE, NW) into a single output cloud.

Overview

The vehicle carries three Velodyne LiDARs that spin asynchronously and have small timing offsets relative to each other. Before merging them, two problems must be solved:

  1. Synchronization — the three scan streams must be paired so they correspond to the same moment in time.
  2. Deskewing (motion compensation) — each scan takes ~100 ms to complete. If the vehicle is turning, points at the start and end of a scan are captured at different vehicle poses. Without correction, the merged cloud would be smeared.

lidar_aggregator handles both using IMU orientation data. An optional online timing offset estimator can refine the initial timing offsets using voxel overlap scoring.

Architecture

/lidar_cc/velodyne_points ─┐
/lidar_ne/velodyne_points ─┤──► ApproximateTime sync ──► deskew each cloud ──► merge ──► /lidar/merged
/lidar_nw/velodyne_points ─┘         ▲
                                      │
/novatel/oem7/imu/data_raw ──────► IMU buffer (SLERP interpolation)
/novatel/oem7/bestpos ──────────► clock offset estimation (GPS↔IMU)

Deskew works per-point using the time field in each PointCloud2 message (offset from scan start). Each point is rotated back to the scan-start pose using interpolated IMU orientation deltas. If no per-point time field is present, scan-level deskew is applied as a fallback.

Online timing offset estimation is optional. When enabled, the node searches over candidate timing offsets for NE/NW clouds, scores each candidate by voxel overlap with the center cloud, and updates the active offsets using exponential moving average. Only activates when yaw rate exceeds a minimum threshold (rotation provides signal for overlap scoring).

CHANGELOG
No CHANGELOG found.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged lidar_aggregator at Robotics Stack Exchange

Package Summary

Version 0.0.0
License Apache 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/WATonomous/wato_monorepo.git
VCS Type git
VCS Version main
Last Updated 2026-08-25
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Aggregates lidar pointclouds into a single merged pointcloud

Maintainers

  • WATonomous

Authors

No additional authors.

lidar_aggregator

Synchronizes, motion-compensates, and merges the three vehicle LiDAR point clouds (center, NE, NW) into a single output cloud.

Overview

The vehicle carries three Velodyne LiDARs that spin asynchronously and have small timing offsets relative to each other. Before merging them, two problems must be solved:

  1. Synchronization — the three scan streams must be paired so they correspond to the same moment in time.
  2. Deskewing (motion compensation) — each scan takes ~100 ms to complete. If the vehicle is turning, points at the start and end of a scan are captured at different vehicle poses. Without correction, the merged cloud would be smeared.

lidar_aggregator handles both using IMU orientation data. An optional online timing offset estimator can refine the initial timing offsets using voxel overlap scoring.

Architecture

/lidar_cc/velodyne_points ─┐
/lidar_ne/velodyne_points ─┤──► ApproximateTime sync ──► deskew each cloud ──► merge ──► /lidar/merged
/lidar_nw/velodyne_points ─┘         ▲
                                      │
/novatel/oem7/imu/data_raw ──────► IMU buffer (SLERP interpolation)
/novatel/oem7/bestpos ──────────► clock offset estimation (GPS↔IMU)

Deskew works per-point using the time field in each PointCloud2 message (offset from scan start). Each point is rotated back to the scan-start pose using interpolated IMU orientation deltas. If no per-point time field is present, scan-level deskew is applied as a fallback.

Online timing offset estimation is optional. When enabled, the node searches over candidate timing offsets for NE/NW clouds, scores each candidate by voxel overlap with the center cloud, and updates the active offsets using exponential moving average. Only activates when yaw rate exceeds a minimum threshold (rotation provides signal for overlap scoring).

CHANGELOG
No CHANGELOG found.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged lidar_aggregator at Robotics Stack Exchange

No version for distro kilted showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.0.0
License Apache 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/WATonomous/wato_monorepo.git
VCS Type git
VCS Version main
Last Updated 2026-08-25
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Aggregates lidar pointclouds into a single merged pointcloud

Maintainers

  • WATonomous

Authors

No additional authors.

lidar_aggregator

Synchronizes, motion-compensates, and merges the three vehicle LiDAR point clouds (center, NE, NW) into a single output cloud.

Overview

The vehicle carries three Velodyne LiDARs that spin asynchronously and have small timing offsets relative to each other. Before merging them, two problems must be solved:

  1. Synchronization — the three scan streams must be paired so they correspond to the same moment in time.
  2. Deskewing (motion compensation) — each scan takes ~100 ms to complete. If the vehicle is turning, points at the start and end of a scan are captured at different vehicle poses. Without correction, the merged cloud would be smeared.

lidar_aggregator handles both using IMU orientation data. An optional online timing offset estimator can refine the initial timing offsets using voxel overlap scoring.

Architecture

/lidar_cc/velodyne_points ─┐
/lidar_ne/velodyne_points ─┤──► ApproximateTime sync ──► deskew each cloud ──► merge ──► /lidar/merged
/lidar_nw/velodyne_points ─┘         ▲
                                      │
/novatel/oem7/imu/data_raw ──────► IMU buffer (SLERP interpolation)
/novatel/oem7/bestpos ──────────► clock offset estimation (GPS↔IMU)

Deskew works per-point using the time field in each PointCloud2 message (offset from scan start). Each point is rotated back to the scan-start pose using interpolated IMU orientation deltas. If no per-point time field is present, scan-level deskew is applied as a fallback.

Online timing offset estimation is optional. When enabled, the node searches over candidate timing offsets for NE/NW clouds, scores each candidate by voxel overlap with the center cloud, and updates the active offsets using exponential moving average. Only activates when yaw rate exceeds a minimum threshold (rotation provides signal for overlap scoring).

CHANGELOG
No CHANGELOG found.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged lidar_aggregator at Robotics Stack Exchange

No version for distro lyrical showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.0.0
License Apache 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/WATonomous/wato_monorepo.git
VCS Type git
VCS Version main
Last Updated 2026-08-25
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Aggregates lidar pointclouds into a single merged pointcloud

Maintainers

  • WATonomous

Authors

No additional authors.

lidar_aggregator

Synchronizes, motion-compensates, and merges the three vehicle LiDAR point clouds (center, NE, NW) into a single output cloud.

Overview

The vehicle carries three Velodyne LiDARs that spin asynchronously and have small timing offsets relative to each other. Before merging them, two problems must be solved:

  1. Synchronization — the three scan streams must be paired so they correspond to the same moment in time.
  2. Deskewing (motion compensation) — each scan takes ~100 ms to complete. If the vehicle is turning, points at the start and end of a scan are captured at different vehicle poses. Without correction, the merged cloud would be smeared.

lidar_aggregator handles both using IMU orientation data. An optional online timing offset estimator can refine the initial timing offsets using voxel overlap scoring.

Architecture

/lidar_cc/velodyne_points ─┐
/lidar_ne/velodyne_points ─┤──► ApproximateTime sync ──► deskew each cloud ──► merge ──► /lidar/merged
/lidar_nw/velodyne_points ─┘         ▲
                                      │
/novatel/oem7/imu/data_raw ──────► IMU buffer (SLERP interpolation)
/novatel/oem7/bestpos ──────────► clock offset estimation (GPS↔IMU)

Deskew works per-point using the time field in each PointCloud2 message (offset from scan start). Each point is rotated back to the scan-start pose using interpolated IMU orientation deltas. If no per-point time field is present, scan-level deskew is applied as a fallback.

Online timing offset estimation is optional. When enabled, the node searches over candidate timing offsets for NE/NW clouds, scores each candidate by voxel overlap with the center cloud, and updates the active offsets using exponential moving average. Only activates when yaw rate exceeds a minimum threshold (rotation provides signal for overlap scoring).

CHANGELOG
No CHANGELOG found.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged lidar_aggregator at Robotics Stack Exchange

No version for distro rolling showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.0.0
License Apache 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/WATonomous/wato_monorepo.git
VCS Type git
VCS Version main
Last Updated 2026-08-25
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Aggregates lidar pointclouds into a single merged pointcloud

Maintainers

  • WATonomous

Authors

No additional authors.

lidar_aggregator

Synchronizes, motion-compensates, and merges the three vehicle LiDAR point clouds (center, NE, NW) into a single output cloud.

Overview

The vehicle carries three Velodyne LiDARs that spin asynchronously and have small timing offsets relative to each other. Before merging them, two problems must be solved:

  1. Synchronization — the three scan streams must be paired so they correspond to the same moment in time.
  2. Deskewing (motion compensation) — each scan takes ~100 ms to complete. If the vehicle is turning, points at the start and end of a scan are captured at different vehicle poses. Without correction, the merged cloud would be smeared.

lidar_aggregator handles both using IMU orientation data. An optional online timing offset estimator can refine the initial timing offsets using voxel overlap scoring.

Architecture

/lidar_cc/velodyne_points ─┐
/lidar_ne/velodyne_points ─┤──► ApproximateTime sync ──► deskew each cloud ──► merge ──► /lidar/merged
/lidar_nw/velodyne_points ─┘         ▲
                                      │
/novatel/oem7/imu/data_raw ──────► IMU buffer (SLERP interpolation)
/novatel/oem7/bestpos ──────────► clock offset estimation (GPS↔IMU)

Deskew works per-point using the time field in each PointCloud2 message (offset from scan start). Each point is rotated back to the scan-start pose using interpolated IMU orientation deltas. If no per-point time field is present, scan-level deskew is applied as a fallback.

Online timing offset estimation is optional. When enabled, the node searches over candidate timing offsets for NE/NW clouds, scores each candidate by voxel overlap with the center cloud, and updates the active offsets using exponential moving average. Only activates when yaw rate exceeds a minimum threshold (rotation provides signal for overlap scoring).

CHANGELOG
No CHANGELOG found.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged lidar_aggregator at Robotics Stack Exchange

No version for distro ardent showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.0.0
License Apache 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/WATonomous/wato_monorepo.git
VCS Type git
VCS Version main
Last Updated 2026-08-25
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Aggregates lidar pointclouds into a single merged pointcloud

Maintainers

  • WATonomous

Authors

No additional authors.

lidar_aggregator

Synchronizes, motion-compensates, and merges the three vehicle LiDAR point clouds (center, NE, NW) into a single output cloud.

Overview

The vehicle carries three Velodyne LiDARs that spin asynchronously and have small timing offsets relative to each other. Before merging them, two problems must be solved:

  1. Synchronization — the three scan streams must be paired so they correspond to the same moment in time.
  2. Deskewing (motion compensation) — each scan takes ~100 ms to complete. If the vehicle is turning, points at the start and end of a scan are captured at different vehicle poses. Without correction, the merged cloud would be smeared.

lidar_aggregator handles both using IMU orientation data. An optional online timing offset estimator can refine the initial timing offsets using voxel overlap scoring.

Architecture

/lidar_cc/velodyne_points ─┐
/lidar_ne/velodyne_points ─┤──► ApproximateTime sync ──► deskew each cloud ──► merge ──► /lidar/merged
/lidar_nw/velodyne_points ─┘         ▲
                                      │
/novatel/oem7/imu/data_raw ──────► IMU buffer (SLERP interpolation)
/novatel/oem7/bestpos ──────────► clock offset estimation (GPS↔IMU)

Deskew works per-point using the time field in each PointCloud2 message (offset from scan start). Each point is rotated back to the scan-start pose using interpolated IMU orientation deltas. If no per-point time field is present, scan-level deskew is applied as a fallback.

Online timing offset estimation is optional. When enabled, the node searches over candidate timing offsets for NE/NW clouds, scores each candidate by voxel overlap with the center cloud, and updates the active offsets using exponential moving average. Only activates when yaw rate exceeds a minimum threshold (rotation provides signal for overlap scoring).

CHANGELOG
No CHANGELOG found.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged lidar_aggregator at Robotics Stack Exchange

No version for distro bouncy showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.0.0
License Apache 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/WATonomous/wato_monorepo.git
VCS Type git
VCS Version main
Last Updated 2026-08-25
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Aggregates lidar pointclouds into a single merged pointcloud

Maintainers

  • WATonomous

Authors

No additional authors.

lidar_aggregator

Synchronizes, motion-compensates, and merges the three vehicle LiDAR point clouds (center, NE, NW) into a single output cloud.

Overview

The vehicle carries three Velodyne LiDARs that spin asynchronously and have small timing offsets relative to each other. Before merging them, two problems must be solved:

  1. Synchronization — the three scan streams must be paired so they correspond to the same moment in time.
  2. Deskewing (motion compensation) — each scan takes ~100 ms to complete. If the vehicle is turning, points at the start and end of a scan are captured at different vehicle poses. Without correction, the merged cloud would be smeared.

lidar_aggregator handles both using IMU orientation data. An optional online timing offset estimator can refine the initial timing offsets using voxel overlap scoring.

Architecture

/lidar_cc/velodyne_points ─┐
/lidar_ne/velodyne_points ─┤──► ApproximateTime sync ──► deskew each cloud ──► merge ──► /lidar/merged
/lidar_nw/velodyne_points ─┘         ▲
                                      │
/novatel/oem7/imu/data_raw ──────► IMU buffer (SLERP interpolation)
/novatel/oem7/bestpos ──────────► clock offset estimation (GPS↔IMU)

Deskew works per-point using the time field in each PointCloud2 message (offset from scan start). Each point is rotated back to the scan-start pose using interpolated IMU orientation deltas. If no per-point time field is present, scan-level deskew is applied as a fallback.

Online timing offset estimation is optional. When enabled, the node searches over candidate timing offsets for NE/NW clouds, scores each candidate by voxel overlap with the center cloud, and updates the active offsets using exponential moving average. Only activates when yaw rate exceeds a minimum threshold (rotation provides signal for overlap scoring).

CHANGELOG
No CHANGELOG found.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged lidar_aggregator at Robotics Stack Exchange

No version for distro crystal showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.0.0
License Apache 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/WATonomous/wato_monorepo.git
VCS Type git
VCS Version main
Last Updated 2026-08-25
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Aggregates lidar pointclouds into a single merged pointcloud

Maintainers

  • WATonomous

Authors

No additional authors.

lidar_aggregator

Synchronizes, motion-compensates, and merges the three vehicle LiDAR point clouds (center, NE, NW) into a single output cloud.

Overview

The vehicle carries three Velodyne LiDARs that spin asynchronously and have small timing offsets relative to each other. Before merging them, two problems must be solved:

  1. Synchronization — the three scan streams must be paired so they correspond to the same moment in time.
  2. Deskewing (motion compensation) — each scan takes ~100 ms to complete. If the vehicle is turning, points at the start and end of a scan are captured at different vehicle poses. Without correction, the merged cloud would be smeared.

lidar_aggregator handles both using IMU orientation data. An optional online timing offset estimator can refine the initial timing offsets using voxel overlap scoring.

Architecture

/lidar_cc/velodyne_points ─┐
/lidar_ne/velodyne_points ─┤──► ApproximateTime sync ──► deskew each cloud ──► merge ──► /lidar/merged
/lidar_nw/velodyne_points ─┘         ▲
                                      │
/novatel/oem7/imu/data_raw ──────► IMU buffer (SLERP interpolation)
/novatel/oem7/bestpos ──────────► clock offset estimation (GPS↔IMU)

Deskew works per-point using the time field in each PointCloud2 message (offset from scan start). Each point is rotated back to the scan-start pose using interpolated IMU orientation deltas. If no per-point time field is present, scan-level deskew is applied as a fallback.

Online timing offset estimation is optional. When enabled, the node searches over candidate timing offsets for NE/NW clouds, scores each candidate by voxel overlap with the center cloud, and updates the active offsets using exponential moving average. Only activates when yaw rate exceeds a minimum threshold (rotation provides signal for overlap scoring).

CHANGELOG
No CHANGELOG found.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged lidar_aggregator at Robotics Stack Exchange

No version for distro eloquent showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.0.0
License Apache 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/WATonomous/wato_monorepo.git
VCS Type git
VCS Version main
Last Updated 2026-08-25
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Aggregates lidar pointclouds into a single merged pointcloud

Maintainers

  • WATonomous

Authors

No additional authors.

lidar_aggregator

Synchronizes, motion-compensates, and merges the three vehicle LiDAR point clouds (center, NE, NW) into a single output cloud.

Overview

The vehicle carries three Velodyne LiDARs that spin asynchronously and have small timing offsets relative to each other. Before merging them, two problems must be solved:

  1. Synchronization — the three scan streams must be paired so they correspond to the same moment in time.
  2. Deskewing (motion compensation) — each scan takes ~100 ms to complete. If the vehicle is turning, points at the start and end of a scan are captured at different vehicle poses. Without correction, the merged cloud would be smeared.

lidar_aggregator handles both using IMU orientation data. An optional online timing offset estimator can refine the initial timing offsets using voxel overlap scoring.

Architecture

/lidar_cc/velodyne_points ─┐
/lidar_ne/velodyne_points ─┤──► ApproximateTime sync ──► deskew each cloud ──► merge ──► /lidar/merged
/lidar_nw/velodyne_points ─┘         ▲
                                      │
/novatel/oem7/imu/data_raw ──────► IMU buffer (SLERP interpolation)
/novatel/oem7/bestpos ──────────► clock offset estimation (GPS↔IMU)

Deskew works per-point using the time field in each PointCloud2 message (offset from scan start). Each point is rotated back to the scan-start pose using interpolated IMU orientation deltas. If no per-point time field is present, scan-level deskew is applied as a fallback.

Online timing offset estimation is optional. When enabled, the node searches over candidate timing offsets for NE/NW clouds, scores each candidate by voxel overlap with the center cloud, and updates the active offsets using exponential moving average. Only activates when yaw rate exceeds a minimum threshold (rotation provides signal for overlap scoring).

CHANGELOG
No CHANGELOG found.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged lidar_aggregator at Robotics Stack Exchange

No version for distro dashing showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.0.0
License Apache 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/WATonomous/wato_monorepo.git
VCS Type git
VCS Version main
Last Updated 2026-08-25
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Aggregates lidar pointclouds into a single merged pointcloud

Maintainers

  • WATonomous

Authors

No additional authors.

lidar_aggregator

Synchronizes, motion-compensates, and merges the three vehicle LiDAR point clouds (center, NE, NW) into a single output cloud.

Overview

The vehicle carries three Velodyne LiDARs that spin asynchronously and have small timing offsets relative to each other. Before merging them, two problems must be solved:

  1. Synchronization — the three scan streams must be paired so they correspond to the same moment in time.
  2. Deskewing (motion compensation) — each scan takes ~100 ms to complete. If the vehicle is turning, points at the start and end of a scan are captured at different vehicle poses. Without correction, the merged cloud would be smeared.

lidar_aggregator handles both using IMU orientation data. An optional online timing offset estimator can refine the initial timing offsets using voxel overlap scoring.

Architecture

/lidar_cc/velodyne_points ─┐
/lidar_ne/velodyne_points ─┤──► ApproximateTime sync ──► deskew each cloud ──► merge ──► /lidar/merged
/lidar_nw/velodyne_points ─┘         ▲
                                      │
/novatel/oem7/imu/data_raw ──────► IMU buffer (SLERP interpolation)
/novatel/oem7/bestpos ──────────► clock offset estimation (GPS↔IMU)

Deskew works per-point using the time field in each PointCloud2 message (offset from scan start). Each point is rotated back to the scan-start pose using interpolated IMU orientation deltas. If no per-point time field is present, scan-level deskew is applied as a fallback.

Online timing offset estimation is optional. When enabled, the node searches over candidate timing offsets for NE/NW clouds, scores each candidate by voxel overlap with the center cloud, and updates the active offsets using exponential moving average. Only activates when yaw rate exceeds a minimum threshold (rotation provides signal for overlap scoring).

CHANGELOG
No CHANGELOG found.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged lidar_aggregator at Robotics Stack Exchange

No version for distro galactic showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.0.0
License Apache 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/WATonomous/wato_monorepo.git
VCS Type git
VCS Version main
Last Updated 2026-08-25
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Aggregates lidar pointclouds into a single merged pointcloud

Maintainers

  • WATonomous

Authors

No additional authors.

lidar_aggregator

Synchronizes, motion-compensates, and merges the three vehicle LiDAR point clouds (center, NE, NW) into a single output cloud.

Overview

The vehicle carries three Velodyne LiDARs that spin asynchronously and have small timing offsets relative to each other. Before merging them, two problems must be solved:

  1. Synchronization — the three scan streams must be paired so they correspond to the same moment in time.
  2. Deskewing (motion compensation) — each scan takes ~100 ms to complete. If the vehicle is turning, points at the start and end of a scan are captured at different vehicle poses. Without correction, the merged cloud would be smeared.

lidar_aggregator handles both using IMU orientation data. An optional online timing offset estimator can refine the initial timing offsets using voxel overlap scoring.

Architecture

/lidar_cc/velodyne_points ─┐
/lidar_ne/velodyne_points ─┤──► ApproximateTime sync ──► deskew each cloud ──► merge ──► /lidar/merged
/lidar_nw/velodyne_points ─┘         ▲
                                      │
/novatel/oem7/imu/data_raw ──────► IMU buffer (SLERP interpolation)
/novatel/oem7/bestpos ──────────► clock offset estimation (GPS↔IMU)

Deskew works per-point using the time field in each PointCloud2 message (offset from scan start). Each point is rotated back to the scan-start pose using interpolated IMU orientation deltas. If no per-point time field is present, scan-level deskew is applied as a fallback.

Online timing offset estimation is optional. When enabled, the node searches over candidate timing offsets for NE/NW clouds, scores each candidate by voxel overlap with the center cloud, and updates the active offsets using exponential moving average. Only activates when yaw rate exceeds a minimum threshold (rotation provides signal for overlap scoring).

CHANGELOG
No CHANGELOG found.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged lidar_aggregator at Robotics Stack Exchange

No version for distro foxy showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.0.0
License Apache 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/WATonomous/wato_monorepo.git
VCS Type git
VCS Version main
Last Updated 2026-08-25
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Aggregates lidar pointclouds into a single merged pointcloud

Maintainers

  • WATonomous

Authors

No additional authors.

lidar_aggregator

Synchronizes, motion-compensates, and merges the three vehicle LiDAR point clouds (center, NE, NW) into a single output cloud.

Overview

The vehicle carries three Velodyne LiDARs that spin asynchronously and have small timing offsets relative to each other. Before merging them, two problems must be solved:

  1. Synchronization — the three scan streams must be paired so they correspond to the same moment in time.
  2. Deskewing (motion compensation) — each scan takes ~100 ms to complete. If the vehicle is turning, points at the start and end of a scan are captured at different vehicle poses. Without correction, the merged cloud would be smeared.

lidar_aggregator handles both using IMU orientation data. An optional online timing offset estimator can refine the initial timing offsets using voxel overlap scoring.

Architecture

/lidar_cc/velodyne_points ─┐
/lidar_ne/velodyne_points ─┤──► ApproximateTime sync ──► deskew each cloud ──► merge ──► /lidar/merged
/lidar_nw/velodyne_points ─┘         ▲
                                      │
/novatel/oem7/imu/data_raw ──────► IMU buffer (SLERP interpolation)
/novatel/oem7/bestpos ──────────► clock offset estimation (GPS↔IMU)

Deskew works per-point using the time field in each PointCloud2 message (offset from scan start). Each point is rotated back to the scan-start pose using interpolated IMU orientation deltas. If no per-point time field is present, scan-level deskew is applied as a fallback.

Online timing offset estimation is optional. When enabled, the node searches over candidate timing offsets for NE/NW clouds, scores each candidate by voxel overlap with the center cloud, and updates the active offsets using exponential moving average. Only activates when yaw rate exceeds a minimum threshold (rotation provides signal for overlap scoring).

CHANGELOG
No CHANGELOG found.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged lidar_aggregator at Robotics Stack Exchange

No version for distro iron showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.0.0
License Apache 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/WATonomous/wato_monorepo.git
VCS Type git
VCS Version main
Last Updated 2026-08-25
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Aggregates lidar pointclouds into a single merged pointcloud

Maintainers

  • WATonomous

Authors

No additional authors.

lidar_aggregator

Synchronizes, motion-compensates, and merges the three vehicle LiDAR point clouds (center, NE, NW) into a single output cloud.

Overview

The vehicle carries three Velodyne LiDARs that spin asynchronously and have small timing offsets relative to each other. Before merging them, two problems must be solved:

  1. Synchronization — the three scan streams must be paired so they correspond to the same moment in time.
  2. Deskewing (motion compensation) — each scan takes ~100 ms to complete. If the vehicle is turning, points at the start and end of a scan are captured at different vehicle poses. Without correction, the merged cloud would be smeared.

lidar_aggregator handles both using IMU orientation data. An optional online timing offset estimator can refine the initial timing offsets using voxel overlap scoring.

Architecture

/lidar_cc/velodyne_points ─┐
/lidar_ne/velodyne_points ─┤──► ApproximateTime sync ──► deskew each cloud ──► merge ──► /lidar/merged
/lidar_nw/velodyne_points ─┘         ▲
                                      │
/novatel/oem7/imu/data_raw ──────► IMU buffer (SLERP interpolation)
/novatel/oem7/bestpos ──────────► clock offset estimation (GPS↔IMU)

Deskew works per-point using the time field in each PointCloud2 message (offset from scan start). Each point is rotated back to the scan-start pose using interpolated IMU orientation deltas. If no per-point time field is present, scan-level deskew is applied as a fallback.

Online timing offset estimation is optional. When enabled, the node searches over candidate timing offsets for NE/NW clouds, scores each candidate by voxel overlap with the center cloud, and updates the active offsets using exponential moving average. Only activates when yaw rate exceeds a minimum threshold (rotation provides signal for overlap scoring).

CHANGELOG
No CHANGELOG found.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged lidar_aggregator at Robotics Stack Exchange

No version for distro lunar showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.0.0
License Apache 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/WATonomous/wato_monorepo.git
VCS Type git
VCS Version main
Last Updated 2026-08-25
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Aggregates lidar pointclouds into a single merged pointcloud

Maintainers

  • WATonomous

Authors

No additional authors.

lidar_aggregator

Synchronizes, motion-compensates, and merges the three vehicle LiDAR point clouds (center, NE, NW) into a single output cloud.

Overview

The vehicle carries three Velodyne LiDARs that spin asynchronously and have small timing offsets relative to each other. Before merging them, two problems must be solved:

  1. Synchronization — the three scan streams must be paired so they correspond to the same moment in time.
  2. Deskewing (motion compensation) — each scan takes ~100 ms to complete. If the vehicle is turning, points at the start and end of a scan are captured at different vehicle poses. Without correction, the merged cloud would be smeared.

lidar_aggregator handles both using IMU orientation data. An optional online timing offset estimator can refine the initial timing offsets using voxel overlap scoring.

Architecture

/lidar_cc/velodyne_points ─┐
/lidar_ne/velodyne_points ─┤──► ApproximateTime sync ──► deskew each cloud ──► merge ──► /lidar/merged
/lidar_nw/velodyne_points ─┘         ▲
                                      │
/novatel/oem7/imu/data_raw ──────► IMU buffer (SLERP interpolation)
/novatel/oem7/bestpos ──────────► clock offset estimation (GPS↔IMU)

Deskew works per-point using the time field in each PointCloud2 message (offset from scan start). Each point is rotated back to the scan-start pose using interpolated IMU orientation deltas. If no per-point time field is present, scan-level deskew is applied as a fallback.

Online timing offset estimation is optional. When enabled, the node searches over candidate timing offsets for NE/NW clouds, scores each candidate by voxel overlap with the center cloud, and updates the active offsets using exponential moving average. Only activates when yaw rate exceeds a minimum threshold (rotation provides signal for overlap scoring).

CHANGELOG
No CHANGELOG found.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged lidar_aggregator at Robotics Stack Exchange

No version for distro jade showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.0.0
License Apache 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/WATonomous/wato_monorepo.git
VCS Type git
VCS Version main
Last Updated 2026-08-25
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Aggregates lidar pointclouds into a single merged pointcloud

Maintainers

  • WATonomous

Authors

No additional authors.

lidar_aggregator

Synchronizes, motion-compensates, and merges the three vehicle LiDAR point clouds (center, NE, NW) into a single output cloud.

Overview

The vehicle carries three Velodyne LiDARs that spin asynchronously and have small timing offsets relative to each other. Before merging them, two problems must be solved:

  1. Synchronization — the three scan streams must be paired so they correspond to the same moment in time.
  2. Deskewing (motion compensation) — each scan takes ~100 ms to complete. If the vehicle is turning, points at the start and end of a scan are captured at different vehicle poses. Without correction, the merged cloud would be smeared.

lidar_aggregator handles both using IMU orientation data. An optional online timing offset estimator can refine the initial timing offsets using voxel overlap scoring.

Architecture

/lidar_cc/velodyne_points ─┐
/lidar_ne/velodyne_points ─┤──► ApproximateTime sync ──► deskew each cloud ──► merge ──► /lidar/merged
/lidar_nw/velodyne_points ─┘         ▲
                                      │
/novatel/oem7/imu/data_raw ──────► IMU buffer (SLERP interpolation)
/novatel/oem7/bestpos ──────────► clock offset estimation (GPS↔IMU)

Deskew works per-point using the time field in each PointCloud2 message (offset from scan start). Each point is rotated back to the scan-start pose using interpolated IMU orientation deltas. If no per-point time field is present, scan-level deskew is applied as a fallback.

Online timing offset estimation is optional. When enabled, the node searches over candidate timing offsets for NE/NW clouds, scores each candidate by voxel overlap with the center cloud, and updates the active offsets using exponential moving average. Only activates when yaw rate exceeds a minimum threshold (rotation provides signal for overlap scoring).

CHANGELOG
No CHANGELOG found.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged lidar_aggregator at Robotics Stack Exchange

No version for distro indigo showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.0.0
License Apache 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/WATonomous/wato_monorepo.git
VCS Type git
VCS Version main
Last Updated 2026-08-25
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Aggregates lidar pointclouds into a single merged pointcloud

Maintainers

  • WATonomous

Authors

No additional authors.

lidar_aggregator

Synchronizes, motion-compensates, and merges the three vehicle LiDAR point clouds (center, NE, NW) into a single output cloud.

Overview

The vehicle carries three Velodyne LiDARs that spin asynchronously and have small timing offsets relative to each other. Before merging them, two problems must be solved:

  1. Synchronization — the three scan streams must be paired so they correspond to the same moment in time.
  2. Deskewing (motion compensation) — each scan takes ~100 ms to complete. If the vehicle is turning, points at the start and end of a scan are captured at different vehicle poses. Without correction, the merged cloud would be smeared.

lidar_aggregator handles both using IMU orientation data. An optional online timing offset estimator can refine the initial timing offsets using voxel overlap scoring.

Architecture

/lidar_cc/velodyne_points ─┐
/lidar_ne/velodyne_points ─┤──► ApproximateTime sync ──► deskew each cloud ──► merge ──► /lidar/merged
/lidar_nw/velodyne_points ─┘         ▲
                                      │
/novatel/oem7/imu/data_raw ──────► IMU buffer (SLERP interpolation)
/novatel/oem7/bestpos ──────────► clock offset estimation (GPS↔IMU)

Deskew works per-point using the time field in each PointCloud2 message (offset from scan start). Each point is rotated back to the scan-start pose using interpolated IMU orientation deltas. If no per-point time field is present, scan-level deskew is applied as a fallback.

Online timing offset estimation is optional. When enabled, the node searches over candidate timing offsets for NE/NW clouds, scores each candidate by voxel overlap with the center cloud, and updates the active offsets using exponential moving average. Only activates when yaw rate exceeds a minimum threshold (rotation provides signal for overlap scoring).

CHANGELOG
No CHANGELOG found.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged lidar_aggregator at Robotics Stack Exchange

No version for distro hydro showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.0.0
License Apache 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/WATonomous/wato_monorepo.git
VCS Type git
VCS Version main
Last Updated 2026-08-25
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Aggregates lidar pointclouds into a single merged pointcloud

Maintainers

  • WATonomous

Authors

No additional authors.

lidar_aggregator

Synchronizes, motion-compensates, and merges the three vehicle LiDAR point clouds (center, NE, NW) into a single output cloud.

Overview

The vehicle carries three Velodyne LiDARs that spin asynchronously and have small timing offsets relative to each other. Before merging them, two problems must be solved:

  1. Synchronization — the three scan streams must be paired so they correspond to the same moment in time.
  2. Deskewing (motion compensation) — each scan takes ~100 ms to complete. If the vehicle is turning, points at the start and end of a scan are captured at different vehicle poses. Without correction, the merged cloud would be smeared.

lidar_aggregator handles both using IMU orientation data. An optional online timing offset estimator can refine the initial timing offsets using voxel overlap scoring.

Architecture

/lidar_cc/velodyne_points ─┐
/lidar_ne/velodyne_points ─┤──► ApproximateTime sync ──► deskew each cloud ──► merge ──► /lidar/merged
/lidar_nw/velodyne_points ─┘         ▲
                                      │
/novatel/oem7/imu/data_raw ──────► IMU buffer (SLERP interpolation)
/novatel/oem7/bestpos ──────────► clock offset estimation (GPS↔IMU)

Deskew works per-point using the time field in each PointCloud2 message (offset from scan start). Each point is rotated back to the scan-start pose using interpolated IMU orientation deltas. If no per-point time field is present, scan-level deskew is applied as a fallback.

Online timing offset estimation is optional. When enabled, the node searches over candidate timing offsets for NE/NW clouds, scores each candidate by voxel overlap with the center cloud, and updates the active offsets using exponential moving average. Only activates when yaw rate exceeds a minimum threshold (rotation provides signal for overlap scoring).

CHANGELOG
No CHANGELOG found.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged lidar_aggregator at Robotics Stack Exchange

No version for distro kinetic showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.0.0
License Apache 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/WATonomous/wato_monorepo.git
VCS Type git
VCS Version main
Last Updated 2026-08-25
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Aggregates lidar pointclouds into a single merged pointcloud

Maintainers

  • WATonomous

Authors

No additional authors.

lidar_aggregator

Synchronizes, motion-compensates, and merges the three vehicle LiDAR point clouds (center, NE, NW) into a single output cloud.

Overview

The vehicle carries three Velodyne LiDARs that spin asynchronously and have small timing offsets relative to each other. Before merging them, two problems must be solved:

  1. Synchronization — the three scan streams must be paired so they correspond to the same moment in time.
  2. Deskewing (motion compensation) — each scan takes ~100 ms to complete. If the vehicle is turning, points at the start and end of a scan are captured at different vehicle poses. Without correction, the merged cloud would be smeared.

lidar_aggregator handles both using IMU orientation data. An optional online timing offset estimator can refine the initial timing offsets using voxel overlap scoring.

Architecture

/lidar_cc/velodyne_points ─┐
/lidar_ne/velodyne_points ─┤──► ApproximateTime sync ──► deskew each cloud ──► merge ──► /lidar/merged
/lidar_nw/velodyne_points ─┘         ▲
                                      │
/novatel/oem7/imu/data_raw ──────► IMU buffer (SLERP interpolation)
/novatel/oem7/bestpos ──────────► clock offset estimation (GPS↔IMU)

Deskew works per-point using the time field in each PointCloud2 message (offset from scan start). Each point is rotated back to the scan-start pose using interpolated IMU orientation deltas. If no per-point time field is present, scan-level deskew is applied as a fallback.

Online timing offset estimation is optional. When enabled, the node searches over candidate timing offsets for NE/NW clouds, scores each candidate by voxel overlap with the center cloud, and updates the active offsets using exponential moving average. Only activates when yaw rate exceeds a minimum threshold (rotation provides signal for overlap scoring).

CHANGELOG
No CHANGELOG found.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged lidar_aggregator at Robotics Stack Exchange

No version for distro melodic showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.0.0
License Apache 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/WATonomous/wato_monorepo.git
VCS Type git
VCS Version main
Last Updated 2026-08-25
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Aggregates lidar pointclouds into a single merged pointcloud

Maintainers

  • WATonomous

Authors

No additional authors.

lidar_aggregator

Synchronizes, motion-compensates, and merges the three vehicle LiDAR point clouds (center, NE, NW) into a single output cloud.

Overview

The vehicle carries three Velodyne LiDARs that spin asynchronously and have small timing offsets relative to each other. Before merging them, two problems must be solved:

  1. Synchronization — the three scan streams must be paired so they correspond to the same moment in time.
  2. Deskewing (motion compensation) — each scan takes ~100 ms to complete. If the vehicle is turning, points at the start and end of a scan are captured at different vehicle poses. Without correction, the merged cloud would be smeared.

lidar_aggregator handles both using IMU orientation data. An optional online timing offset estimator can refine the initial timing offsets using voxel overlap scoring.

Architecture

/lidar_cc/velodyne_points ─┐
/lidar_ne/velodyne_points ─┤──► ApproximateTime sync ──► deskew each cloud ──► merge ──► /lidar/merged
/lidar_nw/velodyne_points ─┘         ▲
                                      │
/novatel/oem7/imu/data_raw ──────► IMU buffer (SLERP interpolation)
/novatel/oem7/bestpos ──────────► clock offset estimation (GPS↔IMU)

Deskew works per-point using the time field in each PointCloud2 message (offset from scan start). Each point is rotated back to the scan-start pose using interpolated IMU orientation deltas. If no per-point time field is present, scan-level deskew is applied as a fallback.

Online timing offset estimation is optional. When enabled, the node searches over candidate timing offsets for NE/NW clouds, scores each candidate by voxel overlap with the center cloud, and updates the active offsets using exponential moving average. Only activates when yaw rate exceeds a minimum threshold (rotation provides signal for overlap scoring).

CHANGELOG
No CHANGELOG found.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged lidar_aggregator at Robotics Stack Exchange

No version for distro noetic showing jazzy. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.0.0
License Apache 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/WATonomous/wato_monorepo.git
VCS Type git
VCS Version main
Last Updated 2026-08-25
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Aggregates lidar pointclouds into a single merged pointcloud

Maintainers

  • WATonomous

Authors

No additional authors.

lidar_aggregator

Synchronizes, motion-compensates, and merges the three vehicle LiDAR point clouds (center, NE, NW) into a single output cloud.

Overview

The vehicle carries three Velodyne LiDARs that spin asynchronously and have small timing offsets relative to each other. Before merging them, two problems must be solved:

  1. Synchronization — the three scan streams must be paired so they correspond to the same moment in time.
  2. Deskewing (motion compensation) — each scan takes ~100 ms to complete. If the vehicle is turning, points at the start and end of a scan are captured at different vehicle poses. Without correction, the merged cloud would be smeared.

lidar_aggregator handles both using IMU orientation data. An optional online timing offset estimator can refine the initial timing offsets using voxel overlap scoring.

Architecture

/lidar_cc/velodyne_points ─┐
/lidar_ne/velodyne_points ─┤──► ApproximateTime sync ──► deskew each cloud ──► merge ──► /lidar/merged
/lidar_nw/velodyne_points ─┘         ▲
                                      │
/novatel/oem7/imu/data_raw ──────► IMU buffer (SLERP interpolation)
/novatel/oem7/bestpos ──────────► clock offset estimation (GPS↔IMU)

Deskew works per-point using the time field in each PointCloud2 message (offset from scan start). Each point is rotated back to the scan-start pose using interpolated IMU orientation deltas. If no per-point time field is present, scan-level deskew is applied as a fallback.

Online timing offset estimation is optional. When enabled, the node searches over candidate timing offsets for NE/NW clouds, scores each candidate by voxel overlap with the center cloud, and updates the active offsets using exponential moving average. Only activates when yaw rate exceeds a minimum threshold (rotation provides signal for overlap scoring).

CHANGELOG
No CHANGELOG found.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged lidar_aggregator at Robotics Stack Exchange