Skip to content

ros2: make simulation runnable + add smoke test to CI#62

Merged
WoosikLee2510 merged 1 commit into
masterfrom
ros2/runtime-smoke
Jun 19, 2026
Merged

ros2: make simulation runnable + add smoke test to CI#62
WoosikLee2510 merged 1 commit into
masterfrom
ros2/runtime-smoke

Conversation

@WoosikLee2510

Copy link
Copy Markdown
Member

Builds on #61 (which fixed the ROS 2 colcon build). This makes the ROS 2 simulation actually run end to end, and upgrades the ROS 2 CI from compile-only to compile + smoke-run.

Changes

  • mins_data: install BSplineDataset/FloorPlans/GroundTruths into the ament share dir (previously the data was never installed for ROS 2).
  • OptionsSimulation: on ROS 2 resolve MINS_DATA_DIR from the mins_data package share (was pointing at mins, where the data does not exist).
  • run_simulation: declare_parameter("config_path") so launch files can set it (passing the path as argv[1] still works); reset the publishers before rclcpp::shutdown() to avoid a teardown segfault.
  • simulation.launch.py: ROS 2 launch file (parity with the ROS 1 simulation.launch).
  • build_ros2.yml: after the Humble image builds, run the default simulation to completion and assert it prints an RMSE summary.

Verified locally (Humble 22.04)

  • ros2 run mins simulation <config.yaml> -> exit 0, RMSE average 0.447 deg / 0.239 m.
  • ros2 launch mins simulation.launch.py -> exit 0, produces RMSE.
  • No more teardown segfault.

- mins_data installs BSplineDataset/FloorPlans/GroundTruths to share for ament
- sim resolves data from mins_data package share (was mins) on ros2
- declare config_path param so launch files can set it (argv still works)
- reset publishers before rclcpp::shutdown to avoid teardown segfault
- add simulation.launch.py
- build_ros2.yml now runs the sim end to end as a smoke test
@github-actions

Copy link
Copy Markdown

Simulation regression report - master vs PR

8 seeds/config, sim UD_Warehouse, informational only (does not block merge).
Delta is PR relative to master (mean). Lower is better for RMSE / Time; NEES closer to ~1-3 is well-calibrated.

full
Metric master PR Delta (mean)
RMSE ori (deg) 133.828 +/- 0.058 133.818 +/- 0.040 -0.0%
RMSE pos (m) 0.085 +/- 0.011 0.082 +/- 0.007 -3.5%
NEES ori 2798002.100 +/- 71874.800 2796409.600 +/- 56502.400 -0.1%
NEES pos 6.800 +/- 1.600 6.500 +/- 1.200 -4.4%
Time (s) 42.900 +/- 0.300 42.800 +/- 0.300 -0.2%
stereo_gps
Metric master PR Delta (mean)
RMSE ori (deg) 0.158 +/- 0.033 0.158 +/- 0.033 +0.0%
RMSE pos (m) 0.076 +/- 0.012 0.076 +/- 0.012 +0.0%
NEES ori 4.400 +/- 2.100 4.400 +/- 2.100 +0.0%
NEES pos 3.800 +/- 1.200 3.800 +/- 1.200 +0.0%
Time (s) 19.200 +/- 0.200 19.100 +/- 0.100 -0.5%
stereo_lidar
Metric master PR Delta (mean)
RMSE ori (deg) 0.365 +/- 0.050 0.365 +/- 0.124 +0.0%
RMSE pos (m) 0.138 +/- 0.028 0.147 +/- 0.048 +6.5%
NEES ori 11.600 +/- 2.700 12.400 +/- 7.600 +6.9%
NEES pos 53.900 +/- 23.700 57.900 +/- 62.700 +7.4%
Time (s) 43.600 +/- 0.600 43.900 +/- 0.500 +0.7%
stereo_wheel
Metric master PR Delta (mean)
RMSE ori (deg) 133.843 +/- 0.057 133.843 +/- 0.057 +0.0%
RMSE pos (m) 0.085 +/- 0.028 0.085 +/- 0.028 +0.0%
NEES ori 2035390.700 +/- 42925.400 2035390.700 +/- 42925.400 +0.0%
NEES pos 28.200 +/- 38.400 28.200 +/- 38.400 +0.0%
Time (s) 20.700 +/- 0.200 20.700 +/- 0.200 +0.0%
vio_stereo
Metric master PR Delta (mean)
RMSE ori (deg) 0.174 +/- 0.036 0.174 +/- 0.036 +0.0%
RMSE pos (m) 0.111 +/- 0.032 0.111 +/- 0.032 +0.0%
NEES ori 2.000 +/- 0.900 2.000 +/- 0.900 +0.0%
NEES pos 12.600 +/- 16.500 12.600 +/- 16.500 +0.0%
Time (s) 18.100 +/- 0.100 18.000 +/- 0.200 -0.6%

@WoosikLee2510 WoosikLee2510 merged commit a9aafa0 into master Jun 19, 2026
11 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant