Skip to content

feat(voxel_grid_based_euclidean_cluster): use CallbackIsolatedAgnocastExecutor for voxel_grid_based_euclidean_cluster#12361

Open
Koichi98 wants to merge 5 commits intoautowarefoundation:mainfrom
Koichi98:feat/apply_cie_to_voxel_grid_based_euclidean_cluster
Open

feat(voxel_grid_based_euclidean_cluster): use CallbackIsolatedAgnocastExecutor for voxel_grid_based_euclidean_cluster#12361
Koichi98 wants to merge 5 commits intoautowarefoundation:mainfrom
Koichi98:feat/apply_cie_to_voxel_grid_based_euclidean_cluster

Conversation

@Koichi98
Copy link
Contributor

@Koichi98 Koichi98 commented Mar 19, 2026

Description

Use CallbackIsolatedAgnocastExecutor (CIE) for voxel_grid_based_euclidean_cluster node, as part of the effort to achieve middleware-transparent scheduling and optimize end-to-end response time across Autoware. By going through autoware_agnocast_wrapper, CIE activation is controlled by the ENABLE_AGNOCAST environment variable — when unset or 0, the node runs with the standard ROS 2 executor as before; when set to 1, it switches to CallbackIsolatedAgnocastExecutor.

Changes

  • CMakeLists.txt: Set SingleThreadedExecutor explicitly for ROS_EXECUTOR and changed to CallbackIsolatedAgnocastExecutor for AGNOCAST_EXECUTOR option.

  • voxel_grid_based_euclidean_cluster.launch.xml: Pass use_multithread=true to agnocast_env.launch.xml so that agnocast_component_container_cie is used when ENABLE_AGNOCAST=1. Also pass container_package and container_executable to the Python launch file.

  • voxel_grid_based_euclidean_cluster.launch.xml: Pass container_package and container_executable to the Python launch file. -

Related links

How was this PR tested?

Notes for reviewers

Please review the following aspects:

  • Verify that all relevant CMakeLists.txt for voxel_grid_based_euclidean_cluster node have been updated (no missed files).

    • Our current target is X2 v4.4.0, so please let us know if we have applied CIE to any nodes that do not run with that version.
  • If the node meets all of the following conditions, please check for potential race conditions (see Effects on system behavior for the reason):

    1. The node was originally running on a rclcpp::executors::SingleThreadedExecutor or rclcpp_components::component_container
    2. The node has multiple callback groups (the default is one)
    3. Shared variables are accessed across callback groups without proper mutex protection

    Note: Nodes already running on MultiThreadedExecutor (or component_container_mt) are not affected, as their callbacks are already executed concurrently.

Interface changes

None.

Effects on system behavior

When ENABLE_AGNOCAST=0 (default), there is no change in behavior at all — the node runs with the standard ROS 2 executor exactly as before.

When ENABLE_AGNOCAST=1, the executor switches to CallbackIsolatedAgnocastExecutor (CIE). Internally, CIE creates a dedicated rclcpp::executors::SingleThreadedExecutor for each callback group, so the fundamental scheduling behavior within each group remains almost identical. The key difference is that, for nodes originally using rclcpp::executors::SingleThreadedExecutor, callback groups now run in parallel across separate threads, similar to MultiThreadedExecutor.

Signed-off-by: Koichi Imai <koichi.imai.2@tier4.jp>
@Koichi98 Koichi98 self-assigned this Mar 19, 2026
@github-actions github-actions bot added the component:perception Advanced sensor data processing and environment understanding. (auto-assigned) label Mar 19, 2026
@github-actions
Copy link

github-actions bot commented Mar 19, 2026

Thank you for contributing to the Autoware project!

🚧 If your pull request is in progress, switch it to draft mode.

Please ensure:

Koichi98 and others added 3 commits March 19, 2026 11:47
Signed-off-by: Koichi Imai <koichi.imai.2@tier4.jp>
Signed-off-by: Koichi Imai <koichi.imai.2@tier4.jp>
@codecov
Copy link

codecov bot commented Mar 19, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 19.03%. Comparing base (54657b7) to head (acfe74d).
⚠️ Report is 17 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main   #12361      +/-   ##
==========================================
+ Coverage   18.54%   19.03%   +0.49%     
==========================================
  Files        1850     1880      +30     
  Lines      128011   129149    +1138     
  Branches    45591    47993    +2402     
==========================================
+ Hits        23736    24581     +845     
- Misses      84599    85482     +883     
+ Partials    19676    19086     -590     
Flag Coverage Δ *Carryforward flag
daily 21.01% <ø> (+<0.01%) ⬆️ Carriedforward from 9059650
daily-cuda 18.53% <ø> (+<0.01%) ⬆️ Carriedforward from 9059650
differential 2.55% <ø> (?)
differential-cuda 2.12% <ø> (?)
total-cuda 18.53% <ø> (+<0.01%) ⬆️ Carriedforward from 9059650
total-humble-cuda 18.54% <ø> (+<0.01%) ⬆️ Carriedforward from 9059650

*This pull request uses carry forward flags. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

component:perception Advanced sensor data processing and environment understanding. (auto-assigned) run:build-and-test-differential Mark to enable build-and-test-differential workflow. (used-by-ci)

Projects

Status: To Triage

Development

Successfully merging this pull request may close these issues.

1 participant