Package Summary
| Version | 1.4.0 |
| License | Apache 2 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/tier4/nebula.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-11-13 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- David Wong
- Max Schmeller
Authors
- TIER IV
Changelog for package nebula_hesai
1.4.0 (2026-11-11)
- fix(hesai_decoder): add handling for fault message packets and corresponding tests (#521) Some sensors (e.g. the AT128P) send fault message packets (SOP 0xCDDC) to the data port, which the decoder reported as truncated point cloud packets about 200 times per second. unpack() now returns the new DecodeError::PACKET_IGNORED for them without logging.
- Contributors: Autumn60
1.3.1 (2026-10-15)
- fix(nebula_hesai): register the UDP receiver thread with the CIE thread configurator again (#498) #469 dropped the thread factory that #460 had passed to HesaiHwInterface, leaving the UDP receive thread a plain std::thread whose scheduling policy, priority, and affinity the Agnocast CIE thread configurator could not set. The prerun template lists nebula_hesai_udp_receiver@<frame_id> again.
- ci(pre-commit): autofix (#500)
- Contributors: Max Schmeller, atsushi yano
1.3.0 (2026-09-29)
- chore(nebula_core_ros): follow upstream's agnocast_wrapper layout (#495) The Hesai wrapper now registers through nebula_agnocast_wrapper_register_node(), which selects the ROS or Agnocast context at runtime instead of assuming an Agnocast-only executor.
- fix(nebula_core_ros): build the synced agnocast_wrapper Node implementation (#494) Drops the redundant USE_AGNOCAST_ENABLED definition, now exported PUBLIC by nebula_core_ros.
- fix(nebula_hesai_decoders): drop scans whose timestamp was never set (#493) Stops such scans from reaching the pointcloud publisher.
- Contributors: Koichi Imai, lei.gu
1.2.0 (2026-07-30)
-
feat(nebula_core_ros): make SyncToolingWorker compatible with agnocast_wrapper::Node (#469)
- feat(nebula_core_ros): make shared diagnostics/sync helpers agnocast_wrapper::Node-compatible
- feat(continental_ars548_ros_wrapper): migrate ContinentalARS548RosWrapper to agnocast_wrapper::Node (Method 2)
* fix(continental_ars548_ros_wrapper): publish pass-through messages via publish(const &) The ALLOCATE_OUTPUT + out = std::move(msg) pattern stole msg's buffer, which was allocated on the normal heap (outside the borrow window), so the payload never entered shared memory and agnocast zero-copy delivered an invalid pointer to cross-process subscribers. publish(const &) borrows inside the window and copies into shared memory, which is correct on both the rclcpp and agnocast backends.
- fix(nebula_core_ros): include renamed nebula_agnocast_wrapper.hpp in sync_tooling_worker
- feat(nebula_hesai): migrate HesaiRosWrapper to agnocast_wrapper::Node (Method 2)
- ci(pre-commit): autofix
- fix(nebula_hesai): renamed wrapper include, const-ref packets publish, restore cie thread factory
- include the post-#472 nebula_agnocast_wrapper.hpp (old autoware_agnocast_wrapper.hpp no longer exists)
- publish raw packets via publish(*msg) so the payload is materialized into shared memory (a plain std::move would leave it on the normal heap, invalid for cross-process subscribers)
- restore make_cie_thread_factory for the packets publish thread; the migration had dropped it, which would leave that non-ROS thread unmanaged by the Agnocast CIE thread configurator and lose its configured priority/affinity
* fix(continental_ars548_ros_wrapper): log the resolved packets topic again The migration replaced [packets_sub_->get_topic_name()]{.title-ref} with the relative topic literal, which hides the actual (namespaced/remapped) topic and makes troubleshooting harder. The wrapper's Subscription has no get_topic_name(), so resolve the name through the node's topics interface instead; this yields the same fully-qualified name as before on both backends.
* fix(nebula_hesai): log the resolved packets topic again The migration replaced [packets_sub_->get_topic_name()]{.title-ref} with the relative topic literal, which hides the actual
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| boost |
Dependant Packages
| Name | Deps |
|---|---|
| nebula |
Launch files
- launch/hesai_launch_all_hw.xml
-
- sensor_model
- launch_hw [default: true]
- config_file [default: $(find-pkg-share nebula_hesai)/config/$(var sensor_model).param.yaml]
- launch/hesai_offline.xml
-
- sensor_model
- return_mode [default: Dual]
- frame_id [default: hesai]
- scan_phase [default: 0.0]
- calibration_file [default: $(find-pkg-share nebula_hesai_decoders)/calibration/$(var sensor_model).csv]
- correction_file [default: $(find-pkg-share nebula_hesai_decoders)/calibration/$(var sensor_model).dat]
- bag_path [default: path to bag dir]
- storage_id [default: sqlite3]
- out_path [default: path to output dir]
- format [default: cdr]
- target_topic [default: /pandar_packets]
- launch/hesai_offline_bag_pcd.xml
-
- output_pcd [default: true]
- output_rosbag [default: true]
- forward_packets_to_rosbag [default: false]
- sensor_model
- lidar_parameter_file [default: $(find-pkg-share nebula_hesai)/config/$(var sensor_model).param.yaml]
- out_num [default: 0]
- skip_num [default: 0]
- bag_path
- input_topic [default: /pandar_packets]
- output_topic [default: /pandar_points]
- out_path
- storage_id [default: sqlite3]
- format [default: cdr]
- only_xyz [default: true]
Messages
Services
Plugins
Recent questions tagged nebula_hesai at Robotics Stack Exchange
Package Summary
| Version | 1.4.0 |
| License | Apache 2 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/tier4/nebula.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-11-13 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- David Wong
- Max Schmeller
Authors
- TIER IV
Changelog for package nebula_hesai
1.4.0 (2026-11-11)
- fix(hesai_decoder): add handling for fault message packets and corresponding tests (#521) Some sensors (e.g. the AT128P) send fault message packets (SOP 0xCDDC) to the data port, which the decoder reported as truncated point cloud packets about 200 times per second. unpack() now returns the new DecodeError::PACKET_IGNORED for them without logging.
- Contributors: Autumn60
1.3.1 (2026-10-15)
- fix(nebula_hesai): register the UDP receiver thread with the CIE thread configurator again (#498) #469 dropped the thread factory that #460 had passed to HesaiHwInterface, leaving the UDP receive thread a plain std::thread whose scheduling policy, priority, and affinity the Agnocast CIE thread configurator could not set. The prerun template lists nebula_hesai_udp_receiver@<frame_id> again.
- ci(pre-commit): autofix (#500)
- Contributors: Max Schmeller, atsushi yano
1.3.0 (2026-09-29)
- chore(nebula_core_ros): follow upstream's agnocast_wrapper layout (#495) The Hesai wrapper now registers through nebula_agnocast_wrapper_register_node(), which selects the ROS or Agnocast context at runtime instead of assuming an Agnocast-only executor.
- fix(nebula_core_ros): build the synced agnocast_wrapper Node implementation (#494) Drops the redundant USE_AGNOCAST_ENABLED definition, now exported PUBLIC by nebula_core_ros.
- fix(nebula_hesai_decoders): drop scans whose timestamp was never set (#493) Stops such scans from reaching the pointcloud publisher.
- Contributors: Koichi Imai, lei.gu
1.2.0 (2026-07-30)
-
feat(nebula_core_ros): make SyncToolingWorker compatible with agnocast_wrapper::Node (#469)
- feat(nebula_core_ros): make shared diagnostics/sync helpers agnocast_wrapper::Node-compatible
- feat(continental_ars548_ros_wrapper): migrate ContinentalARS548RosWrapper to agnocast_wrapper::Node (Method 2)
* fix(continental_ars548_ros_wrapper): publish pass-through messages via publish(const &) The ALLOCATE_OUTPUT + out = std::move(msg) pattern stole msg's buffer, which was allocated on the normal heap (outside the borrow window), so the payload never entered shared memory and agnocast zero-copy delivered an invalid pointer to cross-process subscribers. publish(const &) borrows inside the window and copies into shared memory, which is correct on both the rclcpp and agnocast backends.
- fix(nebula_core_ros): include renamed nebula_agnocast_wrapper.hpp in sync_tooling_worker
- feat(nebula_hesai): migrate HesaiRosWrapper to agnocast_wrapper::Node (Method 2)
- ci(pre-commit): autofix
- fix(nebula_hesai): renamed wrapper include, const-ref packets publish, restore cie thread factory
- include the post-#472 nebula_agnocast_wrapper.hpp (old autoware_agnocast_wrapper.hpp no longer exists)
- publish raw packets via publish(*msg) so the payload is materialized into shared memory (a plain std::move would leave it on the normal heap, invalid for cross-process subscribers)
- restore make_cie_thread_factory for the packets publish thread; the migration had dropped it, which would leave that non-ROS thread unmanaged by the Agnocast CIE thread configurator and lose its configured priority/affinity
* fix(continental_ars548_ros_wrapper): log the resolved packets topic again The migration replaced [packets_sub_->get_topic_name()]{.title-ref} with the relative topic literal, which hides the actual (namespaced/remapped) topic and makes troubleshooting harder. The wrapper's Subscription has no get_topic_name(), so resolve the name through the node's topics interface instead; this yields the same fully-qualified name as before on both backends.
* fix(nebula_hesai): log the resolved packets topic again The migration replaced [packets_sub_->get_topic_name()]{.title-ref} with the relative topic literal, which hides the actual
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| boost |
Dependant Packages
| Name | Deps |
|---|---|
| nebula |
Launch files
- launch/hesai_launch_all_hw.xml
-
- sensor_model
- launch_hw [default: true]
- config_file [default: $(find-pkg-share nebula_hesai)/config/$(var sensor_model).param.yaml]
- launch/hesai_offline.xml
-
- sensor_model
- return_mode [default: Dual]
- frame_id [default: hesai]
- scan_phase [default: 0.0]
- calibration_file [default: $(find-pkg-share nebula_hesai_decoders)/calibration/$(var sensor_model).csv]
- correction_file [default: $(find-pkg-share nebula_hesai_decoders)/calibration/$(var sensor_model).dat]
- bag_path [default: path to bag dir]
- storage_id [default: sqlite3]
- out_path [default: path to output dir]
- format [default: cdr]
- target_topic [default: /pandar_packets]
- launch/hesai_offline_bag_pcd.xml
-
- output_pcd [default: true]
- output_rosbag [default: true]
- forward_packets_to_rosbag [default: false]
- sensor_model
- lidar_parameter_file [default: $(find-pkg-share nebula_hesai)/config/$(var sensor_model).param.yaml]
- out_num [default: 0]
- skip_num [default: 0]
- bag_path
- input_topic [default: /pandar_packets]
- output_topic [default: /pandar_points]
- out_path
- storage_id [default: sqlite3]
- format [default: cdr]
- only_xyz [default: true]
Messages
Services
Plugins
Recent questions tagged nebula_hesai at Robotics Stack Exchange
Package Summary
| Version | 1.4.0 |
| License | Apache 2 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/tier4/nebula.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-11-13 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- David Wong
- Max Schmeller
Authors
- TIER IV
Changelog for package nebula_hesai
1.4.0 (2026-11-11)
- fix(hesai_decoder): add handling for fault message packets and corresponding tests (#521) Some sensors (e.g. the AT128P) send fault message packets (SOP 0xCDDC) to the data port, which the decoder reported as truncated point cloud packets about 200 times per second. unpack() now returns the new DecodeError::PACKET_IGNORED for them without logging.
- Contributors: Autumn60
1.3.1 (2026-10-15)
- fix(nebula_hesai): register the UDP receiver thread with the CIE thread configurator again (#498) #469 dropped the thread factory that #460 had passed to HesaiHwInterface, leaving the UDP receive thread a plain std::thread whose scheduling policy, priority, and affinity the Agnocast CIE thread configurator could not set. The prerun template lists nebula_hesai_udp_receiver@<frame_id> again.
- ci(pre-commit): autofix (#500)
- Contributors: Max Schmeller, atsushi yano
1.3.0 (2026-09-29)
- chore(nebula_core_ros): follow upstream's agnocast_wrapper layout (#495) The Hesai wrapper now registers through nebula_agnocast_wrapper_register_node(), which selects the ROS or Agnocast context at runtime instead of assuming an Agnocast-only executor.
- fix(nebula_core_ros): build the synced agnocast_wrapper Node implementation (#494) Drops the redundant USE_AGNOCAST_ENABLED definition, now exported PUBLIC by nebula_core_ros.
- fix(nebula_hesai_decoders): drop scans whose timestamp was never set (#493) Stops such scans from reaching the pointcloud publisher.
- Contributors: Koichi Imai, lei.gu
1.2.0 (2026-07-30)
-
feat(nebula_core_ros): make SyncToolingWorker compatible with agnocast_wrapper::Node (#469)
- feat(nebula_core_ros): make shared diagnostics/sync helpers agnocast_wrapper::Node-compatible
- feat(continental_ars548_ros_wrapper): migrate ContinentalARS548RosWrapper to agnocast_wrapper::Node (Method 2)
* fix(continental_ars548_ros_wrapper): publish pass-through messages via publish(const &) The ALLOCATE_OUTPUT + out = std::move(msg) pattern stole msg's buffer, which was allocated on the normal heap (outside the borrow window), so the payload never entered shared memory and agnocast zero-copy delivered an invalid pointer to cross-process subscribers. publish(const &) borrows inside the window and copies into shared memory, which is correct on both the rclcpp and agnocast backends.
- fix(nebula_core_ros): include renamed nebula_agnocast_wrapper.hpp in sync_tooling_worker
- feat(nebula_hesai): migrate HesaiRosWrapper to agnocast_wrapper::Node (Method 2)
- ci(pre-commit): autofix
- fix(nebula_hesai): renamed wrapper include, const-ref packets publish, restore cie thread factory
- include the post-#472 nebula_agnocast_wrapper.hpp (old autoware_agnocast_wrapper.hpp no longer exists)
- publish raw packets via publish(*msg) so the payload is materialized into shared memory (a plain std::move would leave it on the normal heap, invalid for cross-process subscribers)
- restore make_cie_thread_factory for the packets publish thread; the migration had dropped it, which would leave that non-ROS thread unmanaged by the Agnocast CIE thread configurator and lose its configured priority/affinity
* fix(continental_ars548_ros_wrapper): log the resolved packets topic again The migration replaced [packets_sub_->get_topic_name()]{.title-ref} with the relative topic literal, which hides the actual (namespaced/remapped) topic and makes troubleshooting harder. The wrapper's Subscription has no get_topic_name(), so resolve the name through the node's topics interface instead; this yields the same fully-qualified name as before on both backends.
* fix(nebula_hesai): log the resolved packets topic again The migration replaced [packets_sub_->get_topic_name()]{.title-ref} with the relative topic literal, which hides the actual
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| boost |
Dependant Packages
| Name | Deps |
|---|---|
| nebula |
Launch files
- launch/hesai_launch_all_hw.xml
-
- sensor_model
- launch_hw [default: true]
- config_file [default: $(find-pkg-share nebula_hesai)/config/$(var sensor_model).param.yaml]
- launch/hesai_offline.xml
-
- sensor_model
- return_mode [default: Dual]
- frame_id [default: hesai]
- scan_phase [default: 0.0]
- calibration_file [default: $(find-pkg-share nebula_hesai_decoders)/calibration/$(var sensor_model).csv]
- correction_file [default: $(find-pkg-share nebula_hesai_decoders)/calibration/$(var sensor_model).dat]
- bag_path [default: path to bag dir]
- storage_id [default: sqlite3]
- out_path [default: path to output dir]
- format [default: cdr]
- target_topic [default: /pandar_packets]
- launch/hesai_offline_bag_pcd.xml
-
- output_pcd [default: true]
- output_rosbag [default: true]
- forward_packets_to_rosbag [default: false]
- sensor_model
- lidar_parameter_file [default: $(find-pkg-share nebula_hesai)/config/$(var sensor_model).param.yaml]
- out_num [default: 0]
- skip_num [default: 0]
- bag_path
- input_topic [default: /pandar_packets]
- output_topic [default: /pandar_points]
- out_path
- storage_id [default: sqlite3]
- format [default: cdr]
- only_xyz [default: true]
Messages
Services
Plugins
Recent questions tagged nebula_hesai at Robotics Stack Exchange
Package Summary
| Version | 1.4.0 |
| License | Apache 2 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/tier4/nebula.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-11-13 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- David Wong
- Max Schmeller
Authors
- TIER IV
Changelog for package nebula_hesai
1.4.0 (2026-11-11)
- fix(hesai_decoder): add handling for fault message packets and corresponding tests (#521) Some sensors (e.g. the AT128P) send fault message packets (SOP 0xCDDC) to the data port, which the decoder reported as truncated point cloud packets about 200 times per second. unpack() now returns the new DecodeError::PACKET_IGNORED for them without logging.
- Contributors: Autumn60
1.3.1 (2026-10-15)
- fix(nebula_hesai): register the UDP receiver thread with the CIE thread configurator again (#498) #469 dropped the thread factory that #460 had passed to HesaiHwInterface, leaving the UDP receive thread a plain std::thread whose scheduling policy, priority, and affinity the Agnocast CIE thread configurator could not set. The prerun template lists nebula_hesai_udp_receiver@<frame_id> again.
- ci(pre-commit): autofix (#500)
- Contributors: Max Schmeller, atsushi yano
1.3.0 (2026-09-29)
- chore(nebula_core_ros): follow upstream's agnocast_wrapper layout (#495) The Hesai wrapper now registers through nebula_agnocast_wrapper_register_node(), which selects the ROS or Agnocast context at runtime instead of assuming an Agnocast-only executor.
- fix(nebula_core_ros): build the synced agnocast_wrapper Node implementation (#494) Drops the redundant USE_AGNOCAST_ENABLED definition, now exported PUBLIC by nebula_core_ros.
- fix(nebula_hesai_decoders): drop scans whose timestamp was never set (#493) Stops such scans from reaching the pointcloud publisher.
- Contributors: Koichi Imai, lei.gu
1.2.0 (2026-07-30)
-
feat(nebula_core_ros): make SyncToolingWorker compatible with agnocast_wrapper::Node (#469)
- feat(nebula_core_ros): make shared diagnostics/sync helpers agnocast_wrapper::Node-compatible
- feat(continental_ars548_ros_wrapper): migrate ContinentalARS548RosWrapper to agnocast_wrapper::Node (Method 2)
* fix(continental_ars548_ros_wrapper): publish pass-through messages via publish(const &) The ALLOCATE_OUTPUT + out = std::move(msg) pattern stole msg's buffer, which was allocated on the normal heap (outside the borrow window), so the payload never entered shared memory and agnocast zero-copy delivered an invalid pointer to cross-process subscribers. publish(const &) borrows inside the window and copies into shared memory, which is correct on both the rclcpp and agnocast backends.
- fix(nebula_core_ros): include renamed nebula_agnocast_wrapper.hpp in sync_tooling_worker
- feat(nebula_hesai): migrate HesaiRosWrapper to agnocast_wrapper::Node (Method 2)
- ci(pre-commit): autofix
- fix(nebula_hesai): renamed wrapper include, const-ref packets publish, restore cie thread factory
- include the post-#472 nebula_agnocast_wrapper.hpp (old autoware_agnocast_wrapper.hpp no longer exists)
- publish raw packets via publish(*msg) so the payload is materialized into shared memory (a plain std::move would leave it on the normal heap, invalid for cross-process subscribers)
- restore make_cie_thread_factory for the packets publish thread; the migration had dropped it, which would leave that non-ROS thread unmanaged by the Agnocast CIE thread configurator and lose its configured priority/affinity
* fix(continental_ars548_ros_wrapper): log the resolved packets topic again The migration replaced [packets_sub_->get_topic_name()]{.title-ref} with the relative topic literal, which hides the actual (namespaced/remapped) topic and makes troubleshooting harder. The wrapper's Subscription has no get_topic_name(), so resolve the name through the node's topics interface instead; this yields the same fully-qualified name as before on both backends.
* fix(nebula_hesai): log the resolved packets topic again The migration replaced [packets_sub_->get_topic_name()]{.title-ref} with the relative topic literal, which hides the actual
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| boost |
Dependant Packages
| Name | Deps |
|---|---|
| nebula |
Launch files
- launch/hesai_launch_all_hw.xml
-
- sensor_model
- launch_hw [default: true]
- config_file [default: $(find-pkg-share nebula_hesai)/config/$(var sensor_model).param.yaml]
- launch/hesai_offline.xml
-
- sensor_model
- return_mode [default: Dual]
- frame_id [default: hesai]
- scan_phase [default: 0.0]
- calibration_file [default: $(find-pkg-share nebula_hesai_decoders)/calibration/$(var sensor_model).csv]
- correction_file [default: $(find-pkg-share nebula_hesai_decoders)/calibration/$(var sensor_model).dat]
- bag_path [default: path to bag dir]
- storage_id [default: sqlite3]
- out_path [default: path to output dir]
- format [default: cdr]
- target_topic [default: /pandar_packets]
- launch/hesai_offline_bag_pcd.xml
-
- output_pcd [default: true]
- output_rosbag [default: true]
- forward_packets_to_rosbag [default: false]
- sensor_model
- lidar_parameter_file [default: $(find-pkg-share nebula_hesai)/config/$(var sensor_model).param.yaml]
- out_num [default: 0]
- skip_num [default: 0]
- bag_path
- input_topic [default: /pandar_packets]
- output_topic [default: /pandar_points]
- out_path
- storage_id [default: sqlite3]
- format [default: cdr]
- only_xyz [default: true]
Messages
Services
Plugins
Recent questions tagged nebula_hesai at Robotics Stack Exchange
Package Summary
| Version | 1.4.0 |
| License | Apache 2 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/tier4/nebula.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-11-13 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- David Wong
- Max Schmeller
Authors
- TIER IV
Changelog for package nebula_hesai
1.4.0 (2026-11-11)
- fix(hesai_decoder): add handling for fault message packets and corresponding tests (#521) Some sensors (e.g. the AT128P) send fault message packets (SOP 0xCDDC) to the data port, which the decoder reported as truncated point cloud packets about 200 times per second. unpack() now returns the new DecodeError::PACKET_IGNORED for them without logging.
- Contributors: Autumn60
1.3.1 (2026-10-15)
- fix(nebula_hesai): register the UDP receiver thread with the CIE thread configurator again (#498) #469 dropped the thread factory that #460 had passed to HesaiHwInterface, leaving the UDP receive thread a plain std::thread whose scheduling policy, priority, and affinity the Agnocast CIE thread configurator could not set. The prerun template lists nebula_hesai_udp_receiver@<frame_id> again.
- ci(pre-commit): autofix (#500)
- Contributors: Max Schmeller, atsushi yano
1.3.0 (2026-09-29)
- chore(nebula_core_ros): follow upstream's agnocast_wrapper layout (#495) The Hesai wrapper now registers through nebula_agnocast_wrapper_register_node(), which selects the ROS or Agnocast context at runtime instead of assuming an Agnocast-only executor.
- fix(nebula_core_ros): build the synced agnocast_wrapper Node implementation (#494) Drops the redundant USE_AGNOCAST_ENABLED definition, now exported PUBLIC by nebula_core_ros.
- fix(nebula_hesai_decoders): drop scans whose timestamp was never set (#493) Stops such scans from reaching the pointcloud publisher.
- Contributors: Koichi Imai, lei.gu
1.2.0 (2026-07-30)
-
feat(nebula_core_ros): make SyncToolingWorker compatible with agnocast_wrapper::Node (#469)
- feat(nebula_core_ros): make shared diagnostics/sync helpers agnocast_wrapper::Node-compatible
- feat(continental_ars548_ros_wrapper): migrate ContinentalARS548RosWrapper to agnocast_wrapper::Node (Method 2)
* fix(continental_ars548_ros_wrapper): publish pass-through messages via publish(const &) The ALLOCATE_OUTPUT + out = std::move(msg) pattern stole msg's buffer, which was allocated on the normal heap (outside the borrow window), so the payload never entered shared memory and agnocast zero-copy delivered an invalid pointer to cross-process subscribers. publish(const &) borrows inside the window and copies into shared memory, which is correct on both the rclcpp and agnocast backends.
- fix(nebula_core_ros): include renamed nebula_agnocast_wrapper.hpp in sync_tooling_worker
- feat(nebula_hesai): migrate HesaiRosWrapper to agnocast_wrapper::Node (Method 2)
- ci(pre-commit): autofix
- fix(nebula_hesai): renamed wrapper include, const-ref packets publish, restore cie thread factory
- include the post-#472 nebula_agnocast_wrapper.hpp (old autoware_agnocast_wrapper.hpp no longer exists)
- publish raw packets via publish(*msg) so the payload is materialized into shared memory (a plain std::move would leave it on the normal heap, invalid for cross-process subscribers)
- restore make_cie_thread_factory for the packets publish thread; the migration had dropped it, which would leave that non-ROS thread unmanaged by the Agnocast CIE thread configurator and lose its configured priority/affinity
* fix(continental_ars548_ros_wrapper): log the resolved packets topic again The migration replaced [packets_sub_->get_topic_name()]{.title-ref} with the relative topic literal, which hides the actual (namespaced/remapped) topic and makes troubleshooting harder. The wrapper's Subscription has no get_topic_name(), so resolve the name through the node's topics interface instead; this yields the same fully-qualified name as before on both backends.
* fix(nebula_hesai): log the resolved packets topic again The migration replaced [packets_sub_->get_topic_name()]{.title-ref} with the relative topic literal, which hides the actual
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| boost |
Dependant Packages
| Name | Deps |
|---|---|
| nebula |
Launch files
- launch/hesai_launch_all_hw.xml
-
- sensor_model
- launch_hw [default: true]
- config_file [default: $(find-pkg-share nebula_hesai)/config/$(var sensor_model).param.yaml]
- launch/hesai_offline.xml
-
- sensor_model
- return_mode [default: Dual]
- frame_id [default: hesai]
- scan_phase [default: 0.0]
- calibration_file [default: $(find-pkg-share nebula_hesai_decoders)/calibration/$(var sensor_model).csv]
- correction_file [default: $(find-pkg-share nebula_hesai_decoders)/calibration/$(var sensor_model).dat]
- bag_path [default: path to bag dir]
- storage_id [default: sqlite3]
- out_path [default: path to output dir]
- format [default: cdr]
- target_topic [default: /pandar_packets]
- launch/hesai_offline_bag_pcd.xml
-
- output_pcd [default: true]
- output_rosbag [default: true]
- forward_packets_to_rosbag [default: false]
- sensor_model
- lidar_parameter_file [default: $(find-pkg-share nebula_hesai)/config/$(var sensor_model).param.yaml]
- out_num [default: 0]
- skip_num [default: 0]
- bag_path
- input_topic [default: /pandar_packets]
- output_topic [default: /pandar_points]
- out_path
- storage_id [default: sqlite3]
- format [default: cdr]
- only_xyz [default: true]
Messages
Services
Plugins
Recent questions tagged nebula_hesai at Robotics Stack Exchange
Package Summary
| Version | 1.4.0 |
| License | Apache 2 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/tier4/nebula.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-11-13 |
| Dev Status | DEVELOPED |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- David Wong
- Max Schmeller
Authors
- TIER IV
Changelog for package nebula_hesai
1.4.0 (2026-11-11)
- fix(hesai_decoder): add handling for fault message packets and corresponding tests (#521) Some sensors (e.g. the AT128P) send fault message packets (SOP 0xCDDC) to the data port, which the decoder reported as truncated point cloud packets about 200 times per second. unpack() now returns the new DecodeError::PACKET_IGNORED for them without logging.
- Contributors: Autumn60
1.3.1 (2026-10-15)
- fix(nebula_hesai): register the UDP receiver thread with the CIE thread configurator again (#498) #469 dropped the thread factory that #460 had passed to HesaiHwInterface, leaving the UDP receive thread a plain std::thread whose scheduling policy, priority, and affinity the Agnocast CIE thread configurator could not set. The prerun template lists nebula_hesai_udp_receiver@<frame_id> again.
- ci(pre-commit): autofix (#500)
- Contributors: Max Schmeller, atsushi yano
1.3.0 (2026-09-29)
- chore(nebula_core_ros): follow upstream's agnocast_wrapper layout (#495) The Hesai wrapper now registers through nebula_agnocast_wrapper_register_node(), which selects the ROS or Agnocast context at runtime instead of assuming an Agnocast-only executor.
- fix(nebula_core_ros): build the synced agnocast_wrapper Node implementation (#494) Drops the redundant USE_AGNOCAST_ENABLED definition, now exported PUBLIC by nebula_core_ros.
- fix(nebula_hesai_decoders): drop scans whose timestamp was never set (#493) Stops such scans from reaching the pointcloud publisher.
- Contributors: Koichi Imai, lei.gu
1.2.0 (2026-07-30)
-
feat(nebula_core_ros): make SyncToolingWorker compatible with agnocast_wrapper::Node (#469)
- feat(nebula_core_ros): make shared diagnostics/sync helpers agnocast_wrapper::Node-compatible
- feat(continental_ars548_ros_wrapper): migrate ContinentalARS548RosWrapper to agnocast_wrapper::Node (Method 2)
* fix(continental_ars548_ros_wrapper): publish pass-through messages via publish(const &) The ALLOCATE_OUTPUT + out = std::move(msg) pattern stole msg's buffer, which was allocated on the normal heap (outside the borrow window), so the payload never entered shared memory and agnocast zero-copy delivered an invalid pointer to cross-process subscribers. publish(const &) borrows inside the window and copies into shared memory, which is correct on both the rclcpp and agnocast backends.
- fix(nebula_core_ros): include renamed nebula_agnocast_wrapper.hpp in sync_tooling_worker
- feat(nebula_hesai): migrate HesaiRosWrapper to agnocast_wrapper::Node (Method 2)
- ci(pre-commit): autofix
- fix(nebula_hesai): renamed wrapper include, const-ref packets publish, restore cie thread factory
- include the post-#472 nebula_agnocast_wrapper.hpp (old autoware_agnocast_wrapper.hpp no longer exists)
- publish raw packets via publish(*msg) so the payload is materialized into shared memory (a plain std::move would leave it on the normal heap, invalid for cross-process subscribers)
- restore make_cie_thread_factory for the packets publish thread; the migration had dropped it, which would leave that non-ROS thread unmanaged by the Agnocast CIE thread configurator and lose its configured priority/affinity
* fix(continental_ars548_ros_wrapper): log the resolved packets topic again The migration replaced [packets_sub_->get_topic_name()]{.title-ref} with the relative topic literal, which hides the actual (namespaced/remapped) topic and makes troubleshooting harder. The wrapper's Subscription has no get_topic_name(), so resolve the name through the node's topics interface instead; this yields the same fully-qualified name as before on both backends.
* fix(nebula_hesai): log the resolved packets topic again The migration replaced [packets_sub_->get_topic_name()]{.title-ref} with the relative topic literal, which hides the actual
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| boost |
Dependant Packages
| Name | Deps |
|---|---|
| autoware_sensor_driver_launch | |
| nebula |
Launch files
- launch/hesai_launch_all_hw.xml
-
- sensor_model
- launch_hw [default: true]
- config_file [default: $(find-pkg-share nebula_hesai)/config/$(var sensor_model).param.yaml]
- launch/hesai_offline.xml
-
- sensor_model
- return_mode [default: Dual]
- frame_id [default: hesai]
- scan_phase [default: 0.0]
- calibration_file [default: $(find-pkg-share nebula_hesai_decoders)/calibration/$(var sensor_model).csv]
- correction_file [default: $(find-pkg-share nebula_hesai_decoders)/calibration/$(var sensor_model).dat]
- bag_path [default: path to bag dir]
- storage_id [default: sqlite3]
- out_path [default: path to output dir]
- format [default: cdr]
- target_topic [default: /pandar_packets]
- launch/hesai_offline_bag_pcd.xml
-
- output_pcd [default: true]
- output_rosbag [default: true]
- forward_packets_to_rosbag [default: false]
- sensor_model
- lidar_parameter_file [default: $(find-pkg-share nebula_hesai)/config/$(var sensor_model).param.yaml]
- out_num [default: 0]
- skip_num [default: 0]
- bag_path
- input_topic [default: /pandar_packets]
- output_topic [default: /pandar_points]
- out_path
- storage_id [default: sqlite3]
- format [default: cdr]
- only_xyz [default: true]
Messages
Services
Plugins
Recent questions tagged nebula_hesai at Robotics Stack Exchange
Package Summary
| Version | 1.4.0 |
| License | Apache 2 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/tier4/nebula.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-11-13 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- David Wong
- Max Schmeller
Authors
- TIER IV
Changelog for package nebula_hesai
1.4.0 (2026-11-11)
- fix(hesai_decoder): add handling for fault message packets and corresponding tests (#521) Some sensors (e.g. the AT128P) send fault message packets (SOP 0xCDDC) to the data port, which the decoder reported as truncated point cloud packets about 200 times per second. unpack() now returns the new DecodeError::PACKET_IGNORED for them without logging.
- Contributors: Autumn60
1.3.1 (2026-10-15)
- fix(nebula_hesai): register the UDP receiver thread with the CIE thread configurator again (#498) #469 dropped the thread factory that #460 had passed to HesaiHwInterface, leaving the UDP receive thread a plain std::thread whose scheduling policy, priority, and affinity the Agnocast CIE thread configurator could not set. The prerun template lists nebula_hesai_udp_receiver@<frame_id> again.
- ci(pre-commit): autofix (#500)
- Contributors: Max Schmeller, atsushi yano
1.3.0 (2026-09-29)
- chore(nebula_core_ros): follow upstream's agnocast_wrapper layout (#495) The Hesai wrapper now registers through nebula_agnocast_wrapper_register_node(), which selects the ROS or Agnocast context at runtime instead of assuming an Agnocast-only executor.
- fix(nebula_core_ros): build the synced agnocast_wrapper Node implementation (#494) Drops the redundant USE_AGNOCAST_ENABLED definition, now exported PUBLIC by nebula_core_ros.
- fix(nebula_hesai_decoders): drop scans whose timestamp was never set (#493) Stops such scans from reaching the pointcloud publisher.
- Contributors: Koichi Imai, lei.gu
1.2.0 (2026-07-30)
-
feat(nebula_core_ros): make SyncToolingWorker compatible with agnocast_wrapper::Node (#469)
- feat(nebula_core_ros): make shared diagnostics/sync helpers agnocast_wrapper::Node-compatible
- feat(continental_ars548_ros_wrapper): migrate ContinentalARS548RosWrapper to agnocast_wrapper::Node (Method 2)
* fix(continental_ars548_ros_wrapper): publish pass-through messages via publish(const &) The ALLOCATE_OUTPUT + out = std::move(msg) pattern stole msg's buffer, which was allocated on the normal heap (outside the borrow window), so the payload never entered shared memory and agnocast zero-copy delivered an invalid pointer to cross-process subscribers. publish(const &) borrows inside the window and copies into shared memory, which is correct on both the rclcpp and agnocast backends.
- fix(nebula_core_ros): include renamed nebula_agnocast_wrapper.hpp in sync_tooling_worker
- feat(nebula_hesai): migrate HesaiRosWrapper to agnocast_wrapper::Node (Method 2)
- ci(pre-commit): autofix
- fix(nebula_hesai): renamed wrapper include, const-ref packets publish, restore cie thread factory
- include the post-#472 nebula_agnocast_wrapper.hpp (old autoware_agnocast_wrapper.hpp no longer exists)
- publish raw packets via publish(*msg) so the payload is materialized into shared memory (a plain std::move would leave it on the normal heap, invalid for cross-process subscribers)
- restore make_cie_thread_factory for the packets publish thread; the migration had dropped it, which would leave that non-ROS thread unmanaged by the Agnocast CIE thread configurator and lose its configured priority/affinity
* fix(continental_ars548_ros_wrapper): log the resolved packets topic again The migration replaced [packets_sub_->get_topic_name()]{.title-ref} with the relative topic literal, which hides the actual (namespaced/remapped) topic and makes troubleshooting harder. The wrapper's Subscription has no get_topic_name(), so resolve the name through the node's topics interface instead; this yields the same fully-qualified name as before on both backends.
* fix(nebula_hesai): log the resolved packets topic again The migration replaced [packets_sub_->get_topic_name()]{.title-ref} with the relative topic literal, which hides the actual
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| boost |
Dependant Packages
| Name | Deps |
|---|---|
| nebula |
Launch files
- launch/hesai_launch_all_hw.xml
-
- sensor_model
- launch_hw [default: true]
- config_file [default: $(find-pkg-share nebula_hesai)/config/$(var sensor_model).param.yaml]
- launch/hesai_offline.xml
-
- sensor_model
- return_mode [default: Dual]
- frame_id [default: hesai]
- scan_phase [default: 0.0]
- calibration_file [default: $(find-pkg-share nebula_hesai_decoders)/calibration/$(var sensor_model).csv]
- correction_file [default: $(find-pkg-share nebula_hesai_decoders)/calibration/$(var sensor_model).dat]
- bag_path [default: path to bag dir]
- storage_id [default: sqlite3]
- out_path [default: path to output dir]
- format [default: cdr]
- target_topic [default: /pandar_packets]
- launch/hesai_offline_bag_pcd.xml
-
- output_pcd [default: true]
- output_rosbag [default: true]
- forward_packets_to_rosbag [default: false]
- sensor_model
- lidar_parameter_file [default: $(find-pkg-share nebula_hesai)/config/$(var sensor_model).param.yaml]
- out_num [default: 0]
- skip_num [default: 0]
- bag_path
- input_topic [default: /pandar_packets]
- output_topic [default: /pandar_points]
- out_path
- storage_id [default: sqlite3]
- format [default: cdr]
- only_xyz [default: true]
Messages
Services
Plugins
Recent questions tagged nebula_hesai at Robotics Stack Exchange
Package Summary
| Version | 1.4.0 |
| License | Apache 2 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/tier4/nebula.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-11-13 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- David Wong
- Max Schmeller
Authors
- TIER IV
Changelog for package nebula_hesai
1.4.0 (2026-11-11)
- fix(hesai_decoder): add handling for fault message packets and corresponding tests (#521) Some sensors (e.g. the AT128P) send fault message packets (SOP 0xCDDC) to the data port, which the decoder reported as truncated point cloud packets about 200 times per second. unpack() now returns the new DecodeError::PACKET_IGNORED for them without logging.
- Contributors: Autumn60
1.3.1 (2026-10-15)
- fix(nebula_hesai): register the UDP receiver thread with the CIE thread configurator again (#498) #469 dropped the thread factory that #460 had passed to HesaiHwInterface, leaving the UDP receive thread a plain std::thread whose scheduling policy, priority, and affinity the Agnocast CIE thread configurator could not set. The prerun template lists nebula_hesai_udp_receiver@<frame_id> again.
- ci(pre-commit): autofix (#500)
- Contributors: Max Schmeller, atsushi yano
1.3.0 (2026-09-29)
- chore(nebula_core_ros): follow upstream's agnocast_wrapper layout (#495) The Hesai wrapper now registers through nebula_agnocast_wrapper_register_node(), which selects the ROS or Agnocast context at runtime instead of assuming an Agnocast-only executor.
- fix(nebula_core_ros): build the synced agnocast_wrapper Node implementation (#494) Drops the redundant USE_AGNOCAST_ENABLED definition, now exported PUBLIC by nebula_core_ros.
- fix(nebula_hesai_decoders): drop scans whose timestamp was never set (#493) Stops such scans from reaching the pointcloud publisher.
- Contributors: Koichi Imai, lei.gu
1.2.0 (2026-07-30)
-
feat(nebula_core_ros): make SyncToolingWorker compatible with agnocast_wrapper::Node (#469)
- feat(nebula_core_ros): make shared diagnostics/sync helpers agnocast_wrapper::Node-compatible
- feat(continental_ars548_ros_wrapper): migrate ContinentalARS548RosWrapper to agnocast_wrapper::Node (Method 2)
* fix(continental_ars548_ros_wrapper): publish pass-through messages via publish(const &) The ALLOCATE_OUTPUT + out = std::move(msg) pattern stole msg's buffer, which was allocated on the normal heap (outside the borrow window), so the payload never entered shared memory and agnocast zero-copy delivered an invalid pointer to cross-process subscribers. publish(const &) borrows inside the window and copies into shared memory, which is correct on both the rclcpp and agnocast backends.
- fix(nebula_core_ros): include renamed nebula_agnocast_wrapper.hpp in sync_tooling_worker
- feat(nebula_hesai): migrate HesaiRosWrapper to agnocast_wrapper::Node (Method 2)
- ci(pre-commit): autofix
- fix(nebula_hesai): renamed wrapper include, const-ref packets publish, restore cie thread factory
- include the post-#472 nebula_agnocast_wrapper.hpp (old autoware_agnocast_wrapper.hpp no longer exists)
- publish raw packets via publish(*msg) so the payload is materialized into shared memory (a plain std::move would leave it on the normal heap, invalid for cross-process subscribers)
- restore make_cie_thread_factory for the packets publish thread; the migration had dropped it, which would leave that non-ROS thread unmanaged by the Agnocast CIE thread configurator and lose its configured priority/affinity
* fix(continental_ars548_ros_wrapper): log the resolved packets topic again The migration replaced [packets_sub_->get_topic_name()]{.title-ref} with the relative topic literal, which hides the actual (namespaced/remapped) topic and makes troubleshooting harder. The wrapper's Subscription has no get_topic_name(), so resolve the name through the node's topics interface instead; this yields the same fully-qualified name as before on both backends.
* fix(nebula_hesai): log the resolved packets topic again The migration replaced [packets_sub_->get_topic_name()]{.title-ref} with the relative topic literal, which hides the actual
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| boost |
Dependant Packages
| Name | Deps |
|---|---|
| nebula |
Launch files
- launch/hesai_launch_all_hw.xml
-
- sensor_model
- launch_hw [default: true]
- config_file [default: $(find-pkg-share nebula_hesai)/config/$(var sensor_model).param.yaml]
- launch/hesai_offline.xml
-
- sensor_model
- return_mode [default: Dual]
- frame_id [default: hesai]
- scan_phase [default: 0.0]
- calibration_file [default: $(find-pkg-share nebula_hesai_decoders)/calibration/$(var sensor_model).csv]
- correction_file [default: $(find-pkg-share nebula_hesai_decoders)/calibration/$(var sensor_model).dat]
- bag_path [default: path to bag dir]
- storage_id [default: sqlite3]
- out_path [default: path to output dir]
- format [default: cdr]
- target_topic [default: /pandar_packets]
- launch/hesai_offline_bag_pcd.xml
-
- output_pcd [default: true]
- output_rosbag [default: true]
- forward_packets_to_rosbag [default: false]
- sensor_model
- lidar_parameter_file [default: $(find-pkg-share nebula_hesai)/config/$(var sensor_model).param.yaml]
- out_num [default: 0]
- skip_num [default: 0]
- bag_path
- input_topic [default: /pandar_packets]
- output_topic [default: /pandar_points]
- out_path
- storage_id [default: sqlite3]
- format [default: cdr]
- only_xyz [default: true]
Messages
Services
Plugins
Recent questions tagged nebula_hesai at Robotics Stack Exchange
Package Summary
| Version | 1.4.0 |
| License | Apache 2 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/tier4/nebula.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-11-13 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- David Wong
- Max Schmeller
Authors
- TIER IV
Changelog for package nebula_hesai
1.4.0 (2026-11-11)
- fix(hesai_decoder): add handling for fault message packets and corresponding tests (#521) Some sensors (e.g. the AT128P) send fault message packets (SOP 0xCDDC) to the data port, which the decoder reported as truncated point cloud packets about 200 times per second. unpack() now returns the new DecodeError::PACKET_IGNORED for them without logging.
- Contributors: Autumn60
1.3.1 (2026-10-15)
- fix(nebula_hesai): register the UDP receiver thread with the CIE thread configurator again (#498) #469 dropped the thread factory that #460 had passed to HesaiHwInterface, leaving the UDP receive thread a plain std::thread whose scheduling policy, priority, and affinity the Agnocast CIE thread configurator could not set. The prerun template lists nebula_hesai_udp_receiver@<frame_id> again.
- ci(pre-commit): autofix (#500)
- Contributors: Max Schmeller, atsushi yano
1.3.0 (2026-09-29)
- chore(nebula_core_ros): follow upstream's agnocast_wrapper layout (#495) The Hesai wrapper now registers through nebula_agnocast_wrapper_register_node(), which selects the ROS or Agnocast context at runtime instead of assuming an Agnocast-only executor.
- fix(nebula_core_ros): build the synced agnocast_wrapper Node implementation (#494) Drops the redundant USE_AGNOCAST_ENABLED definition, now exported PUBLIC by nebula_core_ros.
- fix(nebula_hesai_decoders): drop scans whose timestamp was never set (#493) Stops such scans from reaching the pointcloud publisher.
- Contributors: Koichi Imai, lei.gu
1.2.0 (2026-07-30)
-
feat(nebula_core_ros): make SyncToolingWorker compatible with agnocast_wrapper::Node (#469)
- feat(nebula_core_ros): make shared diagnostics/sync helpers agnocast_wrapper::Node-compatible
- feat(continental_ars548_ros_wrapper): migrate ContinentalARS548RosWrapper to agnocast_wrapper::Node (Method 2)
* fix(continental_ars548_ros_wrapper): publish pass-through messages via publish(const &) The ALLOCATE_OUTPUT + out = std::move(msg) pattern stole msg's buffer, which was allocated on the normal heap (outside the borrow window), so the payload never entered shared memory and agnocast zero-copy delivered an invalid pointer to cross-process subscribers. publish(const &) borrows inside the window and copies into shared memory, which is correct on both the rclcpp and agnocast backends.
- fix(nebula_core_ros): include renamed nebula_agnocast_wrapper.hpp in sync_tooling_worker
- feat(nebula_hesai): migrate HesaiRosWrapper to agnocast_wrapper::Node (Method 2)
- ci(pre-commit): autofix
- fix(nebula_hesai): renamed wrapper include, const-ref packets publish, restore cie thread factory
- include the post-#472 nebula_agnocast_wrapper.hpp (old autoware_agnocast_wrapper.hpp no longer exists)
- publish raw packets via publish(*msg) so the payload is materialized into shared memory (a plain std::move would leave it on the normal heap, invalid for cross-process subscribers)
- restore make_cie_thread_factory for the packets publish thread; the migration had dropped it, which would leave that non-ROS thread unmanaged by the Agnocast CIE thread configurator and lose its configured priority/affinity
* fix(continental_ars548_ros_wrapper): log the resolved packets topic again The migration replaced [packets_sub_->get_topic_name()]{.title-ref} with the relative topic literal, which hides the actual (namespaced/remapped) topic and makes troubleshooting harder. The wrapper's Subscription has no get_topic_name(), so resolve the name through the node's topics interface instead; this yields the same fully-qualified name as before on both backends.
* fix(nebula_hesai): log the resolved packets topic again The migration replaced [packets_sub_->get_topic_name()]{.title-ref} with the relative topic literal, which hides the actual
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| boost |
Dependant Packages
| Name | Deps |
|---|---|
| nebula |
Launch files
- launch/hesai_launch_all_hw.xml
-
- sensor_model
- launch_hw [default: true]
- config_file [default: $(find-pkg-share nebula_hesai)/config/$(var sensor_model).param.yaml]
- launch/hesai_offline.xml
-
- sensor_model
- return_mode [default: Dual]
- frame_id [default: hesai]
- scan_phase [default: 0.0]
- calibration_file [default: $(find-pkg-share nebula_hesai_decoders)/calibration/$(var sensor_model).csv]
- correction_file [default: $(find-pkg-share nebula_hesai_decoders)/calibration/$(var sensor_model).dat]
- bag_path [default: path to bag dir]
- storage_id [default: sqlite3]
- out_path [default: path to output dir]
- format [default: cdr]
- target_topic [default: /pandar_packets]
- launch/hesai_offline_bag_pcd.xml
-
- output_pcd [default: true]
- output_rosbag [default: true]
- forward_packets_to_rosbag [default: false]
- sensor_model
- lidar_parameter_file [default: $(find-pkg-share nebula_hesai)/config/$(var sensor_model).param.yaml]
- out_num [default: 0]
- skip_num [default: 0]
- bag_path
- input_topic [default: /pandar_packets]
- output_topic [default: /pandar_points]
- out_path
- storage_id [default: sqlite3]
- format [default: cdr]
- only_xyz [default: true]
Messages
Services
Plugins
Recent questions tagged nebula_hesai at Robotics Stack Exchange
Package Summary
| Version | 1.4.0 |
| License | Apache 2 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/tier4/nebula.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-11-13 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- David Wong
- Max Schmeller
Authors
- TIER IV
Changelog for package nebula_hesai
1.4.0 (2026-11-11)
- fix(hesai_decoder): add handling for fault message packets and corresponding tests (#521) Some sensors (e.g. the AT128P) send fault message packets (SOP 0xCDDC) to the data port, which the decoder reported as truncated point cloud packets about 200 times per second. unpack() now returns the new DecodeError::PACKET_IGNORED for them without logging.
- Contributors: Autumn60
1.3.1 (2026-10-15)
- fix(nebula_hesai): register the UDP receiver thread with the CIE thread configurator again (#498) #469 dropped the thread factory that #460 had passed to HesaiHwInterface, leaving the UDP receive thread a plain std::thread whose scheduling policy, priority, and affinity the Agnocast CIE thread configurator could not set. The prerun template lists nebula_hesai_udp_receiver@<frame_id> again.
- ci(pre-commit): autofix (#500)
- Contributors: Max Schmeller, atsushi yano
1.3.0 (2026-09-29)
- chore(nebula_core_ros): follow upstream's agnocast_wrapper layout (#495) The Hesai wrapper now registers through nebula_agnocast_wrapper_register_node(), which selects the ROS or Agnocast context at runtime instead of assuming an Agnocast-only executor.
- fix(nebula_core_ros): build the synced agnocast_wrapper Node implementation (#494) Drops the redundant USE_AGNOCAST_ENABLED definition, now exported PUBLIC by nebula_core_ros.
- fix(nebula_hesai_decoders): drop scans whose timestamp was never set (#493) Stops such scans from reaching the pointcloud publisher.
- Contributors: Koichi Imai, lei.gu
1.2.0 (2026-07-30)
-
feat(nebula_core_ros): make SyncToolingWorker compatible with agnocast_wrapper::Node (#469)
- feat(nebula_core_ros): make shared diagnostics/sync helpers agnocast_wrapper::Node-compatible
- feat(continental_ars548_ros_wrapper): migrate ContinentalARS548RosWrapper to agnocast_wrapper::Node (Method 2)
* fix(continental_ars548_ros_wrapper): publish pass-through messages via publish(const &) The ALLOCATE_OUTPUT + out = std::move(msg) pattern stole msg's buffer, which was allocated on the normal heap (outside the borrow window), so the payload never entered shared memory and agnocast zero-copy delivered an invalid pointer to cross-process subscribers. publish(const &) borrows inside the window and copies into shared memory, which is correct on both the rclcpp and agnocast backends.
- fix(nebula_core_ros): include renamed nebula_agnocast_wrapper.hpp in sync_tooling_worker
- feat(nebula_hesai): migrate HesaiRosWrapper to agnocast_wrapper::Node (Method 2)
- ci(pre-commit): autofix
- fix(nebula_hesai): renamed wrapper include, const-ref packets publish, restore cie thread factory
- include the post-#472 nebula_agnocast_wrapper.hpp (old autoware_agnocast_wrapper.hpp no longer exists)
- publish raw packets via publish(*msg) so the payload is materialized into shared memory (a plain std::move would leave it on the normal heap, invalid for cross-process subscribers)
- restore make_cie_thread_factory for the packets publish thread; the migration had dropped it, which would leave that non-ROS thread unmanaged by the Agnocast CIE thread configurator and lose its configured priority/affinity
* fix(continental_ars548_ros_wrapper): log the resolved packets topic again The migration replaced [packets_sub_->get_topic_name()]{.title-ref} with the relative topic literal, which hides the actual (namespaced/remapped) topic and makes troubleshooting harder. The wrapper's Subscription has no get_topic_name(), so resolve the name through the node's topics interface instead; this yields the same fully-qualified name as before on both backends.
* fix(nebula_hesai): log the resolved packets topic again The migration replaced [packets_sub_->get_topic_name()]{.title-ref} with the relative topic literal, which hides the actual
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| boost |
Dependant Packages
| Name | Deps |
|---|---|
| nebula |
Launch files
- launch/hesai_launch_all_hw.xml
-
- sensor_model
- launch_hw [default: true]
- config_file [default: $(find-pkg-share nebula_hesai)/config/$(var sensor_model).param.yaml]
- launch/hesai_offline.xml
-
- sensor_model
- return_mode [default: Dual]
- frame_id [default: hesai]
- scan_phase [default: 0.0]
- calibration_file [default: $(find-pkg-share nebula_hesai_decoders)/calibration/$(var sensor_model).csv]
- correction_file [default: $(find-pkg-share nebula_hesai_decoders)/calibration/$(var sensor_model).dat]
- bag_path [default: path to bag dir]
- storage_id [default: sqlite3]
- out_path [default: path to output dir]
- format [default: cdr]
- target_topic [default: /pandar_packets]
- launch/hesai_offline_bag_pcd.xml
-
- output_pcd [default: true]
- output_rosbag [default: true]
- forward_packets_to_rosbag [default: false]
- sensor_model
- lidar_parameter_file [default: $(find-pkg-share nebula_hesai)/config/$(var sensor_model).param.yaml]
- out_num [default: 0]
- skip_num [default: 0]
- bag_path
- input_topic [default: /pandar_packets]
- output_topic [default: /pandar_points]
- out_path
- storage_id [default: sqlite3]
- format [default: cdr]
- only_xyz [default: true]