Repository navigation
feat(nebula_core_ros): make SyncToolingWorker compatible with agnocast_wrapper::Node - #469
Merged
Merged
Conversation
…wrapper::Node-compatible Signed-off-by: Koichi Imai <koichi.imai.2@tier4.jp>
This was referenced Jul 26, 2026
…pper to agnocast_wrapper::Node (Method 2) Signed-off-by: Koichi Imai <koichi.imai.2@tier4.jp>
…a 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. Signed-off-by: Koichi Imai <koichi.imai.2@tier4.jp>
…sync_tooling_worker Signed-off-by: Koichi Imai <koichi.imai.2@tier4.jp>
… (Method 2) Signed-off-by: Koichi Imai <koichi.imai.2@tier4.jp>
…, restore cie thread factory - include the post-tier4#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 Signed-off-by: Koichi Imai <koichi.imai.2@tier4.jp>
Koichi98
marked this pull request as ready for review
July 27, 2026 06:46
…gain The migration replaced `packets_sub_->get_topic_name()` 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. Signed-off-by: Koichi Imai <koichi.imai.2@tier4.jp>
The migration replaced `packets_sub_->get_topic_name()` 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. Signed-off-by: Koichi Imai <koichi.imai.2@tier4.jp>
feat(nebula_hesai): migrate HesaiRosWrapper to agnocast_wrapper::Node
feat(continental_ars548_ros_wrapper): migrate ContinentalARS548RosWrapper to agnocast_wrapper::Node
Codecov Report❌ Patch coverage is ❌ Your patch check has failed because the patch coverage (30.00%) is below the target coverage (90.00%). You can increase the patch coverage or adjust the target coverage. Additional details and impacted files@@ Coverage Diff @@
## main #469 +/- ##
==========================================
+ Coverage 40.00% 40.06% +0.06%
==========================================
Files 132 135 +3
Lines 10284 10328 +44
Branches 5399 5397 -2
==========================================
+ Hits 4114 4138 +24
- Misses 3777 3806 +29
+ Partials 2393 2384 -9
Flags with carried forward coverage won't be shown. Click here to find out more. 🚀 New features to boost your workflow:
|
mojomex
approved these changes
Jul 29, 2026
mojomex
left a comment
Contributor
There was a problem hiding this comment.
LGTM. Confirmed Nebula compiles&runs with and without Agnocast enabled.
Tested with rosbags for both OT128 and ARS548.
5 tasks
Merged
5 tasks
1 task
mojomex
pushed a commit
that referenced
this pull request
Oct 15, 2026
…ad configurator again (#498) #460 registered two Hesai threads with the Agnocast CIE thread configurator, the packet publisher and the UDP receiver. #469 migrated HesaiRosWrapper to agnocast_wrapper::Node and dropped both thread factories, but it restored only the factory of the packet publisher. The UDP receiver has been a plain std::thread since then, so the configurator cannot set its scheduling policy, priority, or affinity. This change passes make_cie_thread_factory("nebula_hesai_udp_receiver@" + frame_id) to HesaiHwInterface again. With launch_hw:=true and udp_only:=true, the prerun template now lists nebula_hesai_udp_receiver@<frame_id> next to nebula_hesai_packets_pub@<frame_id>. Before this change, it listed only the packet publisher. Signed-off-by: atsushi421 <atsushi.yano.2@tier4.jp>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
PR Type
Related Links
Description
Make the shared
SyncToolingWorkercompatible withagnocast_wrapper::Node.Why hard-code
agnocast_wrapper::Node *instead of aNodeTtemplate:SyncToolingWorkerholds a publisher member whose type depends on the backend. UnlikeRateBoundStatus/LivenessMonitor, which take the node only in a templated constructor and keep no node-typed member, a templated constructor can't type that member — the only template option would be making the whole class a template with adecltype(node->create_publisher<...>(...))-deduced member. That would only add plainrclcpp::Nodesupport, which no caller needs:SyncToolingWorkeris used only byHesaiRosWrapperandContinentalARS548RosWrapper, and both migrate toagnocast_wrapper::Node. Since the wrapper Node already abstracts theENABLE_AGNOCAST=0/1backend,agnocast_wrapper::Node *+NEBULA_PUBLISHER_PTRis simpler and sufficient.SyncToolingWorkerno longer accepts a plainrclcpp::Node *. Onmainthe drivers are stillrclcpp::Nodeand pass one, so merging this branch tomainalone breaks the build; the migrations pass anagnocast_wrapper::Node *that the old constructor rejects. The hesai and continental migrations therefore merge into this branch first, and this branch goes tomainonly once both are integrated.Review Procedure
Build with
ENABLE_AGNOCAST=0and=1after the hesai / continental migrations are merged into this branch.Remarks
None.
Pre-Review Checklist for the PR Author
CI Checks