Conversation
…ion/raw/fix(not my topic, it was already publishing to that)
…d vizualizes it,currently works for rayfronts
…added non-world prims to save in flattened manner
Test Metrics —
|
| Test | Pass | Fail | Skip | Rate (baseline → current) |
|---|---|---|---|---|
| isaac-sim.extensions.PegasusSimulator.extensions.pegasus.simulator.pegasus.simulator.tests.test_hello_world | 0 → 0 | 0 → 1 | 0 → 0 | — → 0% |
| isaac-sim.standalone_examples.replicator.pose_generation.pose_tests.test_utils | 0 → 0 | 0 → 1 | 0 → 0 | — → 0% |
| isaac-sim.standalone_examples.testing.isaacsim.benchmark.services.test_no_rendering | 0 → 0 | 0 → 1 | 0 → 0 | — → 0% |
| isaac-sim.standalone_examples.testing.isaacsim.core.api.test_articulation_determinism | 0 → 0 | 0 → 1 | 0 → 0 | — → 0% |
| isaac-sim.standalone_examples.testing.isaacsim.core.api.test_articulation_root | 0 → 0 | 0 → 1 | 0 → 0 | — → 0% |
| isaac-sim.standalone_examples.testing.isaacsim.core.api.test_delete_in_contact | 0 → 0 | 0 → 1 | 0 → 0 | — → 0% |
| isaac-sim.standalone_examples.testing.isaacsim.core.api.test_rendering | 0 → 0 | 0 → 1 | 0 → 0 | — → 0% |
| isaac-sim.standalone_examples.testing.isaacsim.core.api.test_save_stage | 0 → 0 | 0 → 1 | 0 → 0 | — → 0% |
| isaac-sim.standalone_examples.testing.isaacsim.core.api.test_time_stepping | 0 → 0 | 0 → 1 | 0 → 0 | — → 0% |
| isaac-sim.standalone_examples.testing.isaacsim.cortex.framework.cortex_bringup_test | 0 → 0 | 0 → 1 | 0 → 0 | — → 0% |
| isaac-sim.standalone_examples.testing.isaacsim.ros1.bridge.test_carter_lidar | 0 → 0 | 0 → 1 | 0 → 0 | — → 0% |
| isaac-sim.standalone_examples.testing.isaacsim.ros2.bridge.test_carter_camera_multi_robot_nav | 0 → 0 | 0 → 1 | 0 → 0 | — → 0% |
| isaac-sim.standalone_examples.testing.isaacsim.ros2.bridge.test_people_sim | 0 → 0 | 0 → 1 | 0 → 0 | — → 0% |
| isaac-sim.standalone_examples.testing.isaacsim.sensors.physics.contact_sensor_test | 0 → 0 | 0 → 1 | 0 → 0 | — → 0% |
| isaac-sim.standalone_examples.testing.isaacsim.sensors.rtx.rtx_lidar_test | 0 → 0 | 0 → 1 | 0 → 0 | — → 0% |
| isaac-sim.standalone_examples.testing.isaacsim.sensors.rtx.rtx_radar_test | 0 → 0 | 0 → 1 | 0 → 0 | — → 0% |
| isaac-sim.standalone_examples.testing.isaacsim.simulation_app.test_createstage_config | 0 → 0 | 0 → 1 | 0 → 0 | — → 0% |
| isaac-sim.standalone_examples.testing.isaacsim.simulation_app.test_extension_count | 0 → 0 | 0 → 1 | 0 → 0 | — → 0% |
| isaac-sim.standalone_examples.testing.isaacsim.simulation_app.test_external | 0 → 0 | 0 → 1 | 0 → 0 | — → 0% |
| isaac-sim.standalone_examples.testing.isaacsim.simulation_app.test_extra_args | 0 → 0 | 0 → 1 | 0 → 0 | — → 0% |
| isaac-sim.standalone_examples.testing.isaacsim.simulation_app.test_fabric_frame_delay | 0 → 0 | 0 → 1 | 0 → 0 | — → 0% |
| isaac-sim.standalone_examples.testing.isaacsim.simulation_app.test_fetch_results | 0 → 0 | 0 → 1 | 0 → 0 | — → 0% |
| isaac-sim.standalone_examples.testing.isaacsim.simulation_app.test_frame_delay | 0 → 0 | 0 → 1 | 0 → 0 | — → 0% |
| isaac-sim.standalone_examples.testing.isaacsim.simulation_app.test_ogn | 0 → 0 | 0 → 1 | 0 → 0 | — → 0% |
| isaac-sim.standalone_examples.testing.isaacsim.simulation_app.test_ovd | 0 → 0 | 0 → 1 | 0 → 0 | — → 0% |
| isaac-sim.standalone_examples.testing.isaacsim.simulation_app.test_syntheticdata | 0 → 0 | 0 → 1 | 0 → 0 | — → 0% |
| isaac-sim.standalone_examples.testing.isaacsim.simulation_app.test_unsaved_on_exit | 0 → 0 | 0 → 1 | 0 → 0 | — → 0% |
| isaac-sim.standalone_examples.testing.omni.isaac.dynamic_control.test_zero_step | 0 → 0 | 0 → 1 | 0 → 0 | — → 0% |
| isaac-sim.standalone_examples.testing.omni.replicator.agent.test_scripting | 0 → 0 | 0 → 1 | 0 → 0 | — → 0% |
| isaac-sim.standalone_examples.testing.omni.syntheticdata.test_basic | 0 → 0 | 0 → 1 | 0 → 0 | — → 0% |
| ros_packages.gui.rviz.rviz_behavior_tree_panel.scripts.test_behavior_tree_publisher | 0 → 0 | 0 → 1 | 0 → 0 | — → 0% |
| ros_packages.logging.bag_recorder_pid.test.test_copyright | 0 → 0 | 0 → 1 | 0 → 0 | — → 0% |
| ros_packages.logging.bag_recorder_pid.test.test_flake8 | 0 → 0 | 0 → 1 | 0 → 0 | — → 0% |
| ros_packages.logging.bag_recorder_pid.test.test_pep257 | 0 → 0 | 0 → 1 | 0 → 0 | — → 0% |
| ros_ws.src.local.planners.takeoff_landing_planner.test.scripts.test_takeoff_landing_planner | 0 → 0 | 0 → 1 | 0 → 0 | — → 0% |
| ros_ws.src.perception.macvo_ros2.macvo_ros2.macvo.Baseline.DPVO.Pangolin.components.pango_python.pybind11.tests | 0 → 0 | 0 → 1 | 0 → 0 | — → 0% |
| ros_ws.src.perception.macvo_ros2.macvo_ros2.macvo.Scripts.UnitTest.test_circular_buffer | 0 → 0 | 0 → 1 | 0 → 0 | — → 0% |
| ros_ws.src.perception.macvo_ros2.macvo_ros2.macvo.Scripts.UnitTest.test_config_loadable | 0 → 0 | 0 → 1 | 0 → 0 | — → 0% |
| ros_ws.src.perception.macvo_ros2.macvo_ros2.macvo.Scripts.UnitTest.test_config_macvo | 0 → 0 | 0 → 1 | 0 → 0 | — → 0% |
| ros_ws.src.perception.macvo_ros2.macvo_ros2.macvo.Scripts.UnitTest.test_config_modules | 0 → 0 | 0 → 1 | 0 → 0 | — → 0% |
| ros_ws.src.perception.macvo_ros2.macvo_ros2.macvo.Scripts.UnitTest.test_config_sequence | 0 → 0 | 0 → 1 | 0 → 0 | — → 0% |
| ros_ws.src.perception.macvo_ros2.macvo_ros2.macvo.Scripts.UnitTest.test_config_tartanvo | 0 → 0 | 0 → 1 | 0 → 0 | — → 0% |
| ros_ws.src.perception.macvo_ros2.macvo_ros2.macvo.Scripts.UnitTest.test_frontend | 0 → 0 | 0 → 1 | 0 → 0 | — → 0% |
| ros_ws.src.perception.macvo_ros2.macvo_ros2.macvo.Scripts.UnitTest.test_matching | 0 → 0 | 0 → 1 | 0 → 0 | — → 0% |
| ros_ws.src.perception.macvo_ros2.macvo_ros2.macvo.Scripts.UnitTest.test_performance_macvo | 0 → 0 | 0 → 1 | 0 → 0 | — → 0% |
| ros_ws.src.perception.macvo_ros2.macvo_ros2.macvo.Scripts.UnitTest.test_stereo_depth | 0 → 0 | 0 → 1 | 0 → 0 | — → 0% |
| ros_ws.src.ros2tak_tools.test.test_copyright | 0 → 0 | 0 → 1 | 0 → 0 | — → 0% |
| ros_ws.src.ros2tak_tools.test.test_flake8 | 0 → 0 | 0 → 1 | 0 → 0 | — → 0% |
| ros_ws.src.ros2tak_tools.test.test_pep257 | 0 → 0 | 0 → 1 | 0 → 0 | — → 0% |
| ros_ws.src.sensors.camera_param_server.test.test_copyright | 0 → 0 | 0 → 1 | 0 → 0 | — → 0% |
| ros_ws.src.sensors.camera_param_server.test.test_flake8 | 0 → 0 | 0 → 1 | 0 → 0 | — → 0% |
| ros_ws.src.sensors.camera_param_server.test.test_pep257 | 0 → 0 | 0 → 1 | 0 → 0 | — → 0% |
| ros_ws.src.sensors.gimbal_stabilizer.test.test_copyright | 0 → 0 | 0 → 1 | 0 → 0 | — → 0% |
| ros_ws.src.sensors.gimbal_stabilizer.test.test_flake8 | 0 → 0 | 0 → 1 | 0 → 0 | — → 0% |
| ros_ws.src.sensors.gimbal_stabilizer.test.test_pep257 | 0 → 0 | 0 → 1 | 0 → 0 | — → 0% |
Metrics
| Test | Metric | Baseline | Current | Change |
|---|---|---|---|---|
| ros_packages.gui.rviz.rviz_behavior_tree_panel.scripts.test_behavior_tree_publisher | duration_s | — | 0s | new |
| ros_packages.logging.bag_recorder_pid.test.test_copyright | duration_s | — | 0s | new |
| ros_packages.logging.bag_recorder_pid.test.test_flake8 | duration_s | — | 0s | new |
| ros_packages.logging.bag_recorder_pid.test.test_pep257 | duration_s | — | 0s | new |
| ros_ws.src.ros2tak_tools.test.test_copyright | duration_s | — | 0s | new |
| ros_ws.src.ros2tak_tools.test.test_flake8 | duration_s | — | 0s | new |
| ros_ws.src.ros2tak_tools.test.test_pep257 | duration_s | — | 0s | new |
| ros_ws.src.local.planners.takeoff_landing_planner.test.scripts.test_takeoff_landing_planner | duration_s | — | 0s | new |
| ros_ws.src.perception.macvo_ros2.macvo_ros2.macvo.Baseline.DPVO.Pangolin.components.pango_python.pybind11.tests | duration_s | — | 0s | new |
| ros_ws.src.perception.macvo_ros2.macvo_ros2.macvo.Scripts.UnitTest.test_circular_buffer | duration_s | — | 0s | new |
| ros_ws.src.perception.macvo_ros2.macvo_ros2.macvo.Scripts.UnitTest.test_config_loadable | duration_s | — | 0s | new |
| ros_ws.src.perception.macvo_ros2.macvo_ros2.macvo.Scripts.UnitTest.test_config_macvo | duration_s | — | 0s | new |
| ros_ws.src.perception.macvo_ros2.macvo_ros2.macvo.Scripts.UnitTest.test_config_modules | duration_s | — | 0s | new |
| ros_ws.src.perception.macvo_ros2.macvo_ros2.macvo.Scripts.UnitTest.test_config_sequence | duration_s | — | 0s | new |
| ros_ws.src.perception.macvo_ros2.macvo_ros2.macvo.Scripts.UnitTest.test_config_tartanvo | duration_s | — | 0s | new |
| ros_ws.src.perception.macvo_ros2.macvo_ros2.macvo.Scripts.UnitTest.test_frontend | duration_s | — | 0s | new |
| ros_ws.src.perception.macvo_ros2.macvo_ros2.macvo.Scripts.UnitTest.test_matching | duration_s | — | 0s | new |
| ros_ws.src.perception.macvo_ros2.macvo_ros2.macvo.Scripts.UnitTest.test_performance_macvo | duration_s | — | 0s | new |
| ros_ws.src.perception.macvo_ros2.macvo_ros2.macvo.Scripts.UnitTest.test_stereo_depth | duration_s | — | 0s | new |
| ros_ws.src.sensors.camera_param_server.test.test_copyright | duration_s | — | 0s | new |
| ros_ws.src.sensors.camera_param_server.test.test_flake8 | duration_s | — | 0s | new |
| ros_ws.src.sensors.camera_param_server.test.test_pep257 | duration_s | — | 0s | new |
| ros_ws.src.sensors.gimbal_stabilizer.test.test_copyright | duration_s | — | 0s | new |
| ros_ws.src.sensors.gimbal_stabilizer.test.test_flake8 | duration_s | — | 0s | new |
| ros_ws.src.sensors.gimbal_stabilizer.test.test_pep257 | duration_s | — | 0s | new |
| isaac-sim.extensions.PegasusSimulator.extensions.pegasus.simulator.pegasus.simulator.tests.test_hello_world | duration_s | — | 0s | new |
| isaac-sim.standalone_examples.replicator.pose_generation.pose_tests.test_utils | duration_s | — | 0s | new |
| isaac-sim.standalone_examples.testing.isaacsim.benchmark.services.test_no_rendering | duration_s | — | 0s | new |
| isaac-sim.standalone_examples.testing.isaacsim.core.api.test_articulation_determinism | duration_s | — | 0s | new |
| isaac-sim.standalone_examples.testing.isaacsim.core.api.test_articulation_root | duration_s | — | 0s | new |
| isaac-sim.standalone_examples.testing.isaacsim.core.api.test_delete_in_contact | duration_s | — | 0s | new |
| isaac-sim.standalone_examples.testing.isaacsim.core.api.test_rendering | duration_s | — | 0s | new |
| isaac-sim.standalone_examples.testing.isaacsim.core.api.test_save_stage | duration_s | — | 0s | new |
| isaac-sim.standalone_examples.testing.isaacsim.core.api.test_time_stepping | duration_s | — | 0s | new |
| isaac-sim.standalone_examples.testing.isaacsim.cortex.framework.cortex_bringup_test | duration_s | — | 0s | new |
| isaac-sim.standalone_examples.testing.isaacsim.ros1.bridge.test_carter_lidar | duration_s | — | 0s | new |
| isaac-sim.standalone_examples.testing.isaacsim.ros2.bridge.test_carter_camera_multi_robot_nav | duration_s | — | 0s | new |
| isaac-sim.standalone_examples.testing.isaacsim.ros2.bridge.test_people_sim | duration_s | — | 0s | new |
| isaac-sim.standalone_examples.testing.isaacsim.sensors.physics.contact_sensor_test | duration_s | — | 0s | new |
| isaac-sim.standalone_examples.testing.isaacsim.sensors.rtx.rtx_lidar_test | duration_s | — | 0s | new |
| isaac-sim.standalone_examples.testing.isaacsim.sensors.rtx.rtx_radar_test | duration_s | — | 0s | new |
| isaac-sim.standalone_examples.testing.isaacsim.simulation_app.test_createstage_config | duration_s | — | 0s | new |
| isaac-sim.standalone_examples.testing.isaacsim.simulation_app.test_extension_count | duration_s | — | 0s | new |
| isaac-sim.standalone_examples.testing.isaacsim.simulation_app.test_external | duration_s | — | 0s | new |
| isaac-sim.standalone_examples.testing.isaacsim.simulation_app.test_extra_args | duration_s | — | 0s | new |
| isaac-sim.standalone_examples.testing.isaacsim.simulation_app.test_fabric_frame_delay | duration_s | — | 0s | new |
| isaac-sim.standalone_examples.testing.isaacsim.simulation_app.test_fetch_results | duration_s | — | 0s | new |
| isaac-sim.standalone_examples.testing.isaacsim.simulation_app.test_frame_delay | duration_s | — | 0s | new |
| isaac-sim.standalone_examples.testing.isaacsim.simulation_app.test_ogn | duration_s | — | 0s | new |
| isaac-sim.standalone_examples.testing.isaacsim.simulation_app.test_ovd | duration_s | — | 0s | new |
| isaac-sim.standalone_examples.testing.isaacsim.simulation_app.test_syntheticdata | duration_s | — | 0s | new |
| isaac-sim.standalone_examples.testing.isaacsim.simulation_app.test_unsaved_on_exit | duration_s | — | 0s | new |
| isaac-sim.standalone_examples.testing.omni.isaac.dynamic_control.test_zero_step | duration_s | — | 0s | new |
| isaac-sim.standalone_examples.testing.omni.replicator.agent.test_scripting | duration_s | — | 0s | new |
| isaac-sim.standalone_examples.testing.omni.syntheticdata.test_basic | duration_s | — | 0s | new |
test_takeoff_hover_land
Pass rates
| Test | Pass | Fail | Skip | Rate (baseline → current) |
|---|---|---|---|---|
| test_hover[msairsim-rob#1-v0.5] | 1 → 0 | 0 → 0 | 0 → 0 | 100% → — |
| test_hover[msairsim-rob#1-v1.0] | 1 → 0 | 0 → 0 | 0 → 0 | 100% → — |
| test_hover[msairsim-rob#1-v2.0] | 1 → 0 | 0 → 0 | 0 → 0 | 100% → — |
| test_landing[msairsim-rob#1-v0.5] | 1 → 0 | 0 → 0 | 0 → 0 | 100% → — |
| test_landing[msairsim-rob#1-v1.0] | 1 → 0 | 0 → 0 | 0 → 0 | 100% → — |
| test_landing[msairsim-rob#1-v2.0] | 1 → 0 | 0 → 0 | 0 → 0 | 100% → — |
| test_px4_ready[msairsim-rob#1-v0.5] | 1 → 0 | 0 → 0 | 0 → 0 | 100% → — |
| test_px4_ready[msairsim-rob#1-v1.0] | 1 → 0 | 0 → 0 | 0 → 0 | 100% → — |
| test_px4_ready[msairsim-rob#1-v2.0] | 1 → 0 | 0 → 0 | 0 → 0 | 100% → — |
| test_takeoff[msairsim-rob#1-v0.5] | 1 → 0 | 0 → 0 | 0 → 0 | 100% → — |
| test_takeoff[msairsim-rob#1-v1.0] | 1 → 0 | 0 → 0 | 0 → 0 | 100% → — |
| test_takeoff[msairsim-rob#1-v2.0] | 1 → 0 | 0 → 0 | 0 → 0 | 100% → — |
Metrics
| Test | Metric | Baseline | Current | Change |
|---|---|---|---|---|
| test_px4_ready[msairsim-rob#1-v0.5] | duration_s | 215.2s | — | removed |
| test_px4_ready[msairsim-rob#1-v0.5] | airstack_up_duration_s | 3.22s | — | removed |
| test_px4_ready[msairsim-rob#1-v0.5] | airstack_down_duration_s | 11.02s | — | removed |
| test_px4_ready[msairsim-rob#1-v0.5] | robot.ready_duration_sys_s | 211.3s | — | removed |
| test_takeoff[msairsim-rob#1-v0.5] | duration_s | 24.1s | — | removed |
| test_takeoff[msairsim-rob#1-v0.5] | robot.altitude_error_m | -0.089m | — | removed |
| test_takeoff[msairsim-rob#1-v0.5] | robot.overshoot_m | 0m | — | removed |
| test_takeoff[msairsim-rob#1-v0.5] | robot.takeoff_duration_sim_s | 18.64s | — | removed |
| test_takeoff[msairsim-rob#1-v0.5] | robot.velocity_rmse_m_sim_s | 0.217m/s | — | removed |
| test_takeoff[msairsim-rob#1-v0.5] | robot.odometry_error_mean_m | 0.579m | — | removed |
| test_takeoff[msairsim-rob#1-v0.5] | robot.odometry_error_max_m | 0.669m | — | removed |
| test_takeoff[msairsim-rob#1-v0.5] | robot.odometry_altitude_bias_m | 0.575m | — | removed |
| test_hover[msairsim-rob#1-v0.5] | duration_s | 10.06s | — | removed |
| test_hover[msairsim-rob#1-v0.5] | robot.hover_altitude_mean_error_m | 0.046m | — | removed |
| test_hover[msairsim-rob#1-v0.5] | robot.hover_position_stddev_m | 0.023m | — | removed |
| test_hover[msairsim-rob#1-v0.5] | robot.odometry_error_mean_m | 0.674m | — | removed |
| test_hover[msairsim-rob#1-v0.5] | robot.odometry_error_max_m | 0.696m | — | removed |
| test_hover[msairsim-rob#1-v0.5] | robot.odometry_altitude_bias_m | 0.674m | — | removed |
| test_landing[msairsim-rob#1-v0.5] | duration_s | 26.44s | — | removed |
| test_landing[msairsim-rob#1-v0.5] | robot.final_altitude_m | -0.097m | — | removed |
| test_landing[msairsim-rob#1-v0.5] | robot.land_duration_sim_s | 14.8s | — | removed |
| test_landing[msairsim-rob#1-v0.5] | robot.velocity_rmse_m_sim_s | 0.226m/s | — | removed |
| test_landing[msairsim-rob#1-v0.5] | robot.odometry_error_mean_m | 0.707m | — | removed |
| test_landing[msairsim-rob#1-v0.5] | robot.odometry_error_max_m | 0.803m | — | removed |
| test_landing[msairsim-rob#1-v0.5] | robot.odometry_altitude_bias_m | 0.706m | — | removed |
| test_px4_ready[msairsim-rob#1-v1.0] | duration_s | 0.001s | — | removed |
| test_takeoff[msairsim-rob#1-v1.0] | duration_s | 16.82s | — | removed |
| test_takeoff[msairsim-rob#1-v1.0] | robot.altitude_error_m | -0.048m | — | removed |
| test_takeoff[msairsim-rob#1-v1.0] | robot.overshoot_m | 0m | — | removed |
| test_takeoff[msairsim-rob#1-v1.0] | robot.takeoff_duration_sim_s | 10.22s | — | removed |
| test_takeoff[msairsim-rob#1-v1.0] | robot.velocity_rmse_m_sim_s | 0.393m/s | — | removed |
| test_takeoff[msairsim-rob#1-v1.0] | robot.odometry_error_mean_m | 0.538m | — | removed |
| test_takeoff[msairsim-rob#1-v1.0] | robot.odometry_error_max_m | 0.684m | — | removed |
| test_takeoff[msairsim-rob#1-v1.0] | robot.odometry_altitude_bias_m | 0.538m | — | removed |
| test_hover[msairsim-rob#1-v1.0] | duration_s | 10.07s | — | removed |
| test_hover[msairsim-rob#1-v1.0] | robot.hover_altitude_mean_error_m | 0.127m | — | removed |
| test_hover[msairsim-rob#1-v1.0] | robot.hover_position_stddev_m | 0.06m | — | removed |
| test_hover[msairsim-rob#1-v1.0] | robot.odometry_error_mean_m | 0.697m | — | removed |
| test_hover[msairsim-rob#1-v1.0] | robot.odometry_error_max_m | 0.734m | — | removed |
| test_hover[msairsim-rob#1-v1.0] | robot.odometry_altitude_bias_m | 0.696m | — | removed |
| test_landing[msairsim-rob#1-v1.0] | duration_s | 17.34s | — | removed |
| test_landing[msairsim-rob#1-v1.0] | robot.final_altitude_m | -0.149m | — | removed |
| test_landing[msairsim-rob#1-v1.0] | robot.land_duration_sim_s | 7.2s | — | removed |
| test_landing[msairsim-rob#1-v1.0] | robot.velocity_rmse_m_sim_s | 0.436m/s | — | removed |
| test_landing[msairsim-rob#1-v1.0] | robot.odometry_error_mean_m | 0.679m | — | removed |
| test_landing[msairsim-rob#1-v1.0] | robot.odometry_error_max_m | 0.935m | — | removed |
| test_landing[msairsim-rob#1-v1.0] | robot.odometry_altitude_bias_m | 0.679m | — | removed |
| test_px4_ready[msairsim-rob#1-v2.0] | duration_s | 0.001s | — | removed |
| test_takeoff[msairsim-rob#1-v2.0] | duration_s | 15.89s | — | removed |
| test_takeoff[msairsim-rob#1-v2.0] | robot.altitude_error_m | -0.042m | — | removed |
| test_takeoff[msairsim-rob#1-v2.0] | robot.overshoot_m | 0m | — | removed |
| test_takeoff[msairsim-rob#1-v2.0] | robot.takeoff_duration_sim_s | 10.36s | — | removed |
| test_takeoff[msairsim-rob#1-v2.0] | robot.velocity_rmse_m_sim_s | 1.086m/s | — | removed |
| test_takeoff[msairsim-rob#1-v2.0] | robot.odometry_error_mean_m | 0.541m | — | removed |
| test_takeoff[msairsim-rob#1-v2.0] | robot.odometry_error_max_m | 0.684m | — | removed |
| test_takeoff[msairsim-rob#1-v2.0] | robot.odometry_altitude_bias_m | 0.541m | — | removed |
| test_hover[msairsim-rob#1-v2.0] | duration_s | 10.07s | — | removed |
| test_hover[msairsim-rob#1-v2.0] | robot.hover_altitude_mean_error_m | 0.165m | — | removed |
| test_hover[msairsim-rob#1-v2.0] | robot.hover_position_stddev_m | 0.083m | — | removed |
| test_hover[msairsim-rob#1-v2.0] | robot.odometry_error_mean_m | 0.712m | — | removed |
| test_hover[msairsim-rob#1-v2.0] | robot.odometry_error_max_m | 0.748m | — | removed |
| test_hover[msairsim-rob#1-v2.0] | robot.odometry_altitude_bias_m | 0.712m | — | removed |
| test_landing[msairsim-rob#1-v2.0] | duration_s | 26.67s | — | removed |
| test_landing[msairsim-rob#1-v2.0] | robot.final_altitude_m | -0.143m | — | removed |
| test_landing[msairsim-rob#1-v2.0] | robot.land_duration_sim_s | 6.678s | — | removed |
| test_landing[msairsim-rob#1-v2.0] | robot.velocity_rmse_m_sim_s | 0.944m/s | — | removed |
| test_landing[msairsim-rob#1-v2.0] | robot.odometry_error_mean_m | 0.684m | — | removed |
| test_landing[msairsim-rob#1-v2.0] | robot.odometry_error_max_m | 0.963m | — | removed |
| test_landing[msairsim-rob#1-v2.0] | robot.odometry_altitude_bias_m | 0.684m | — | removed |
|
/pytest -m "build_docker or build_packages or liveliness or takeoff_hover_land" |
|
Running Note: |
Test Metrics —
|
| Test | Pass | Fail | Skip | Rate (baseline → current) |
|---|---|---|---|---|
| test_build_gcs | 0 → 1 | 0 → 0 | 0 → 0 | — → 100% |
| test_build_isaac_sim | 0 → 1 | 0 → 0 | 0 → 0 | — → 100% |
| test_build_ms_airsim | 0 → 1 | 0 → 0 | 0 → 0 | — → 100% |
| test_build_robot_desktop | 0 → 1 | 0 → 0 | 0 → 0 | — → 100% |
Metrics
| Test | Metric | Baseline | Current | Change |
|---|---|---|---|---|
| test_build_robot_desktop | duration_s | — | 75.78s | new |
| test_build_gcs | duration_s | — | 38.24s | new |
| test_build_isaac_sim | duration_s | — | 147s | new |
| test_build_ms_airsim | duration_s | — | 31.35s | new |
test_build_packages
Pass rates
| Test | Pass | Fail | Skip | Rate (baseline → current) |
|---|---|---|---|---|
| test_colcon_build_gcs | 0 → 1 | 0 → 0 | 0 → 0 | — → 100% |
| test_colcon_build_ms_airsim | 0 → 1 | 0 → 0 | 0 → 0 | — → 100% |
| test_colcon_build_robot | 0 → 1 | 0 → 0 | 0 → 0 | — → 100% |
Metrics
| Test | Metric | Baseline | Current | Change |
|---|---|---|---|---|
| test_colcon_build_robot | duration_s | — | 170s | new |
| test_colcon_build_gcs | duration_s | — | 57.39s | new |
| test_colcon_build_ms_airsim | duration_s | — | 12.49s | new |
test_liveliness
Pass rates
| Test | Pass | Fail | Skip | Rate (baseline → current) |
|---|---|---|---|---|
| test_compute_usage[isaacsim-rob#1] | 0 → 1 | 0 → 0 | 0 → 0 | — → 100% |
| test_compute_usage[isaacsim-rob#3] | 0 → 1 | 0 → 0 | 0 → 0 | — → 100% |
| test_compute_usage[msairsim-rob#1] | 0 → 1 | 0 → 0 | 0 → 0 | — → 100% |
| test_compute_usage[msairsim-rob#3] | 0 → 1 | 0 → 0 | 0 → 0 | — → 100% |
| test_gcs_container_running[isaacsim-rob#1] | 0 → 1 | 0 → 0 | 0 → 0 | — → 100% |
| test_gcs_container_running[isaacsim-rob#3] | 0 → 1 | 0 → 0 | 0 → 0 | — → 100% |
| test_gcs_container_running[msairsim-rob#1] | 0 → 1 | 0 → 0 | 0 → 0 | — → 100% |
| test_gcs_container_running[msairsim-rob#3] | 0 → 1 | 0 → 0 | 0 → 0 | — → 100% |
| test_realtime_factor[isaacsim-rob#1] | 0 → 0 | 0 → 1 | 0 → 0 | — → 0% |
| test_realtime_factor[isaacsim-rob#3] | 0 → 1 | 0 → 0 | 0 → 0 | — → 100% |
| test_realtime_factor[msairsim-rob#1] | 0 → 1 | 0 → 0 | 0 → 0 | — → 100% |
| test_realtime_factor[msairsim-rob#3] | 0 → 1 | 0 → 0 | 0 → 0 | — → 100% |
| test_robot_containers_running[isaacsim-rob#1] | 0 → 1 | 0 → 0 | 0 → 0 | — → 100% |
| test_robot_containers_running[isaacsim-rob#3] | 0 → 1 | 0 → 0 | 0 → 0 | — → 100% |
| test_robot_containers_running[msairsim-rob#1] | 0 → 1 | 0 → 0 | 0 → 0 | — → 100% |
| test_robot_containers_running[msairsim-rob#3] | 0 → 1 | 0 → 0 | 0 → 0 | — → 100% |
| test_sentinel_nodes_present[isaacsim-rob#1] | 0 → 1 | 0 → 0 | 0 → 0 | — → 100% |
| test_sentinel_nodes_present[isaacsim-rob#3] | 0 → 1 | 0 → 0 | 0 → 0 | — → 100% |
| test_sentinel_nodes_present[msairsim-rob#1] | 0 → 1 | 0 → 0 | 0 → 0 | — → 100% |
| test_sentinel_nodes_present[msairsim-rob#3] | 0 → 1 | 0 → 0 | 0 → 0 | — → 100% |
| test_sim_container_running[isaacsim-rob#1] | 0 → 1 | 0 → 0 | 0 → 0 | — → 100% |
| test_sim_container_running[isaacsim-rob#3] | 0 → 1 | 0 → 0 | 0 → 0 | — → 100% |
| test_sim_container_running[msairsim-rob#1] | 0 → 1 | 0 → 0 | 0 → 0 | — → 100% |
| test_sim_container_running[msairsim-rob#3] | 0 → 1 | 0 → 0 | 0 → 0 | — → 100% |
| test_sim_publishing[isaacsim-rob#1] | 0 → 0 | 0 → 1 | 0 → 0 | — → 0% |
| test_sim_publishing[isaacsim-rob#3] | 0 → 1 | 0 → 0 | 0 → 0 | — → 100% |
| test_sim_publishing[msairsim-rob#1] | 0 → 1 | 0 → 0 | 0 → 0 | — → 100% |
| test_sim_publishing[msairsim-rob#3] | 0 → 1 | 0 → 0 | 0 → 0 | — → 100% |
| test_sim_ready_time[isaacsim-rob#1] | 0 → 1 | 0 → 0 | 0 → 0 | — → 100% |
| test_sim_ready_time[isaacsim-rob#3] | 0 → 1 | 0 → 0 | 0 → 0 | — → 100% |
| test_sim_ready_time[msairsim-rob#1] | 0 → 1 | 0 → 0 | 0 → 0 | — → 100% |
| test_sim_ready_time[msairsim-rob#3] | 0 → 1 | 0 → 0 | 0 → 0 | — → 100% |
| test_stable[isaacsim-rob#1] | 0 → 0 | 0 → 0 | 0 → 1 | — → — |
| test_stable[isaacsim-rob#3] | 0 → 1 | 0 → 0 | 0 → 0 | — → 100% |
| test_stable[msairsim-rob#1] | 0 → 1 | 0 → 0 | 0 → 0 | — → 100% |
| test_stable[msairsim-rob#3] | 0 → 1 | 0 → 0 | 0 → 0 | — → 100% |
| test_tmux_panes_have_expected_processes[isaacsim-rob#1] | 0 → 1 | 0 → 0 | 0 → 0 | — → 100% |
| test_tmux_panes_have_expected_processes[isaacsim-rob#3] | 0 → 1 | 0 → 0 | 0 → 0 | — → 100% |
| test_tmux_panes_have_expected_processes[msairsim-rob#1] | 0 → 1 | 0 → 0 | 0 → 0 | — → 100% |
| test_tmux_panes_have_expected_processes[msairsim-rob#3] | 0 → 1 | 0 → 0 | 0 → 0 | — → 100% |
Metrics
| Test | Metric | Baseline | Current | Change |
|---|---|---|---|---|
| test_robot_containers_running[msairsim-rob#1] | duration_s | — | 2.004s | new |
| test_robot_containers_running[msairsim-rob#1] | airstack_up_duration_s | — | 1.59s | new |
| test_robot_containers_running[msairsim-rob#1] | airstack_down_duration_s | — | 10.92s | new |
| test_sim_container_running[msairsim-rob#1] | duration_s | — | 0.017s | new |
| test_gcs_container_running[msairsim-rob#1] | duration_s | — | 0.045s | new |
| test_sim_ready_time[msairsim-rob#1] | duration_s | — | 8.117s | new |
| test_sim_ready_time[msairsim-rob#1] | sim_ready_duration_s | — | 9.82s | new |
| test_tmux_panes_have_expected_processes[msairsim-rob#1] | duration_s | — | 0.194s | new |
| test_sim_publishing[msairsim-rob#1] | duration_s | — | 10.44s | new |
| test_compute_usage[msairsim-rob#1] | duration_s | — | 2.691s | new |
| test_realtime_factor[msairsim-rob#1] | duration_s | — | 23.02s | new |
| test_realtime_factor[msairsim-rob#1] | sim.realtime_factor | — | 0.995 | new |
| test_sentinel_nodes_present[msairsim-rob#1] | duration_s | — | 1.445s | new |
| test_stable[msairsim-rob#1] | duration_s | — | 288.4s | new |
| test_robot_containers_running[msairsim-rob#3] | duration_s | — | 14.18s | new |
| test_robot_containers_running[msairsim-rob#3] | airstack_up_duration_s | — | 2.66s | new |
| test_robot_containers_running[msairsim-rob#3] | airstack_down_duration_s | — | 11.3s | new |
| test_sim_container_running[msairsim-rob#3] | duration_s | — | 0.03s | new |
| test_gcs_container_running[msairsim-rob#3] | duration_s | — | 0.094s | new |
| test_sim_ready_time[msairsim-rob#3] | duration_s | — | 4.573s | new |
| test_sim_ready_time[msairsim-rob#3] | sim_ready_duration_s | — | 7.5s | new |
| test_tmux_panes_have_expected_processes[msairsim-rob#3] | duration_s | — | 0.429s | new |
| test_sim_publishing[msairsim-rob#3] | duration_s | — | 10.55s | new |
| test_compute_usage[msairsim-rob#3] | duration_s | — | 2.687s | new |
| test_realtime_factor[msairsim-rob#3] | duration_s | — | 22.44s | new |
| test_realtime_factor[msairsim-rob#3] | sim.realtime_factor | — | 1.001 | new |
| test_sentinel_nodes_present[msairsim-rob#3] | duration_s | — | 11.53s | new |
| test_stable[msairsim-rob#3] | duration_s | — | 311.8s | new |
| test_robot_containers_running[isaacsim-rob#1] | duration_s | — | 13.53s | new |
| test_robot_containers_running[isaacsim-rob#1] | airstack_up_duration_s | — | 1.77s | new |
| test_robot_containers_running[isaacsim-rob#1] | airstack_down_duration_s | — | 12.32s | new |
| test_sim_container_running[isaacsim-rob#1] | duration_s | — | 0.018s | new |
| test_gcs_container_running[isaacsim-rob#1] | duration_s | — | 0.045s | new |
| test_sim_ready_time[isaacsim-rob#1] | duration_s | — | 47.8s | new |
| test_sim_ready_time[isaacsim-rob#1] | sim_ready_duration_s | — | 49.68s | new |
| test_tmux_panes_have_expected_processes[isaacsim-rob#1] | duration_s | — | 0.195s | new |
| test_sim_publishing[isaacsim-rob#1] | duration_s | — | 10.68s | new |
| test_compute_usage[isaacsim-rob#1] | duration_s | — | 2.629s | new |
| test_realtime_factor[isaacsim-rob#1] | duration_s | — | 5.509s | new |
| test_sentinel_nodes_present[isaacsim-rob#1] | duration_s | — | 7.054s | new |
| test_stable[isaacsim-rob#1] | duration_s | — | 0s | new |
| test_robot_containers_running[isaacsim-rob#3] | duration_s | — | 15.57s | new |
| test_robot_containers_running[isaacsim-rob#3] | airstack_up_duration_s | — | 2.67s | new |
| test_robot_containers_running[isaacsim-rob#3] | airstack_down_duration_s | — | 12.52s | new |
| test_sim_container_running[isaacsim-rob#3] | duration_s | — | 0.029s | new |
| test_gcs_container_running[isaacsim-rob#3] | duration_s | — | 0.08s | new |
| test_sim_ready_time[isaacsim-rob#3] | duration_s | — | 68.67s | new |
| test_sim_ready_time[isaacsim-rob#3] | sim_ready_duration_s | — | 71.58s | new |
| test_tmux_panes_have_expected_processes[isaacsim-rob#3] | duration_s | — | 0.385s | new |
| test_sim_publishing[isaacsim-rob#3] | duration_s | — | 10.66s | new |
| test_compute_usage[isaacsim-rob#3] | duration_s | — | 2.671s | new |
| test_realtime_factor[isaacsim-rob#3] | duration_s | — | 22.64s | new |
| test_realtime_factor[isaacsim-rob#3] | sim.realtime_factor | — | 0.746 | new |
| test_sentinel_nodes_present[isaacsim-rob#3] | duration_s | — | 11.69s | new |
| test_stable[isaacsim-rob#3] | duration_s | — | 324.5s | new |
Sim publishing rates (baseline n=None, current n=1; baseline → current, per-topic)
| Test | Topic | mean | start_mean | end_mean | min | max |
|---|---|---|---|---|---|---|
| test_stable[msairsim-rob#1] | clock | 46.24Hz | 45.49Hz (t=10-60s) | 46.99Hz (t=70-120s) | 31.2Hz | 56.8Hz |
| test_stable[msairsim-rob#1] | robot.sensors.front_stereo.left.image_rect | 4.17Hz | 3.56Hz (t=10-60s) | 4.79Hz (t=70-120s) | 2.852Hz | 9.372Hz |
| test_stable[msairsim-rob#1] | robot.sensors.front_stereo.right.image_rect | 3.96Hz | 3.65Hz (t=10-60s) | 4.28Hz (t=70-120s) | 3.344Hz | 5.354Hz |
| test_stable[msairsim-rob#1] | robot.sensors.front_stereo.left.depth_ground_truth | 3.34Hz | 3.25Hz (t=10-60s) | 3.43Hz (t=70-120s) | 2.308Hz | 3.858Hz |
| test_stable[msairsim-rob#1] | robot.sensors.front_stereo.right.depth_ground_truth | 4.8Hz | 3.85Hz (t=10-60s) | 5.75Hz (t=70-120s) | 2.882Hz | 10.26Hz |
| test_stable[msairsim-rob#3] | clock | 48.59Hz | 41.76Hz (t=10-60s) | 55.41Hz (t=70-120s) | 33.47Hz | 73.88Hz |
| test_stable[msairsim-rob#3] | robot.sensors.front_stereo.left.image_rect | 3.28Hz | 3.43Hz (t=10-60s) | 3.14Hz (t=70-120s) | 2.244Hz | 7.447Hz |
| test_stable[msairsim-rob#3] | robot.sensors.front_stereo.right.image_rect | 3.66Hz | 3.79Hz (t=10-60s) | 3.52Hz (t=70-120s) | 2.315Hz | 8.6Hz |
| test_stable[msairsim-rob#3] | robot.sensors.front_stereo.left.depth_ground_truth | 2.87Hz | 2.88Hz (t=10-60s) | 2.85Hz (t=70-120s) | 1.915Hz | 3.137Hz |
| test_stable[msairsim-rob#3] | robot.sensors.front_stereo.right.depth_ground_truth | 3.35Hz | 3.18Hz (t=10-60s) | 3.51Hz (t=70-120s) | 1.873Hz | 8.698Hz |
| test_stable[isaacsim-rob#3] | clock | 23.36Hz | 23.95Hz (t=10-60s) | 22.78Hz (t=70-120s) | 21.66Hz | 25.18Hz |
| test_stable[isaacsim-rob#3] | robot.sensors.front_stereo.left.image_rect | 23.11Hz | 23.43Hz (t=10-60s) | 22.8Hz (t=70-120s) | 17.49Hz | 25.78Hz |
| test_stable[isaacsim-rob#3] | robot.sensors.front_stereo.right.image_rect | 22.24Hz | 22.94Hz (t=10-60s) | 21.54Hz (t=70-120s) | 16.43Hz | 25.36Hz |
| test_stable[isaacsim-rob#3] | robot.sensors.front_stereo.left.depth_ground_truth | 18.48Hz | 18.68Hz (t=10-60s) | 18.28Hz (t=70-120s) | 10.32Hz | 25.17Hz |
| test_stable[isaacsim-rob#3] | robot.sensors.front_stereo.right.depth_ground_truth | 20.61Hz | 20.25Hz (t=10-60s) | 20.97Hz (t=70-120s) | 15.1Hz | 25.24Hz |
Compute usage (baseline n=None, current n=1; baseline → current, per-container and global)
| Test | Entity | Metric | mean | start_mean | end_mean | min | max |
|---|---|---|---|---|---|---|---|
| test_stable[msairsim-rob#1] | ms-airsim | cpu_pct | 309.7% | 308.5% (t=10-60s) | 310.9% (t=70-120s) | 302.8% | 315.8% |
| test_stable[msairsim-rob#1] | ms-airsim | mem_mb | 668.1MB | 666.3MB (t=10-60s) | 669.9MB (t=70-120s) | 663.4MB | 671.7MB |
| test_stable[msairsim-rob#1] | ms-airsim | disk_io_mb | 517.5MB | 490.5MB (t=10-60s) | 544.5MB (t=70-120s) | 468MB | 567MB |
| test_stable[msairsim-rob#1] | ms-airsim | net_io_mb | 3771MB | 2456MB (t=10-60s) | 5086MB (t=70-120s) | 1390MB | 6193MB |
| test_stable[msairsim-rob#1] | host | cpu_pct | 14.16% | 13.88% (t=10-60s) | 14.43% (t=70-120s) | 12.3% | 16.6% |
| test_stable[msairsim-rob#1] | host | mem_mb | 3831MB | 3810MB (t=10-60s) | 3852MB (t=70-120s) | 3774MB | 3866MB |
| test_stable[msairsim-rob#1] | host | gpu_pct | 66% | 65.17% (t=10-60s) | 66.83% (t=70-120s) | 58% | 71% |
| test_stable[msairsim-rob#1] | host | vram_mb | 727.8MB | 728MB (t=10-60s) | 727.5MB (t=70-120s) | 727MB | 728MB |
| test_stable[msairsim-rob#1] | host | gpu_temp_c | 38°C | 37°C (t=10-60s) | 39°C (t=70-120s) | 35°C | 39°C |
| test_stable[msairsim-rob#1] | host | gpu_power_w | 99.44W | 98.6W (t=10-60s) | 100.3W (t=70-120s) | 97.4W | 102W |
| test_stable[msairsim-rob#1] | airstack-robot-desktop | cpu_pct | 198.9% | 198.8% (t=10-60s) | 199% (t=70-120s) | 167.8% | 229.8% |
| test_stable[msairsim-rob#1] | airstack-robot-desktop | mem_mb | 867.6MB | 862MB (t=10-60s) | 873.1MB (t=70-120s) | 854.6MB | 881.9MB |
| test_stable[msairsim-rob#1] | airstack-robot-desktop | disk_io_mb | 303.1MB | 302.9MB (t=10-60s) | 303.2MB (t=70-120s) | 302.5MB | 303.3MB |
| test_stable[msairsim-rob#1] | airstack-robot-desktop | net_io_mb | 3694MB | 2353MB (t=10-60s) | 5034MB (t=70-120s) | 1266MB | 6169MB |
| test_stable[msairsim-rob#1] | airstack-gcs | cpu_pct | 51.15% | 46.78% (t=10-60s) | 55.53% (t=70-120s) | 13.35% | 94.06% |
| test_stable[msairsim-rob#1] | airstack-gcs | mem_mb | 422.4MB | 421.8MB (t=10-60s) | 423MB (t=70-120s) | 420.5MB | 423.6MB |
| test_stable[msairsim-rob#1] | airstack-gcs | disk_io_mb | 167.1MB | 167.1MB (t=10-60s) | 167.2MB (t=70-120s) | 167MB | 167.3MB |
| test_stable[msairsim-rob#1] | airstack-gcs | net_io_mb | 93.64MB | 58MB (t=10-60s) | 129.3MB (t=70-120s) | 30.1MB | 158.5MB |
| test_stable[msairsim-rob#3] | ms-airsim | cpu_pct | 512.1% | 513.8% (t=10-60s) | 510.3% (t=70-120s) | 503.3% | 524.2% |
| test_stable[msairsim-rob#3] | ms-airsim | mem_mb | 740.4MB | 735MB (t=10-60s) | 745.7MB (t=70-120s) | 732.4MB | 749.2MB |
| test_stable[msairsim-rob#3] | ms-airsim | disk_io_mb | 243.7MB | 156.7MB (t=10-60s) | 330.7MB (t=70-120s) | 84MB | 403MB |
| test_stable[msairsim-rob#3] | ms-airsim | net_io_mb | 1.004e+04MB | 6456MB (t=10-60s) | 1.362e+04MB (t=70-120s) | 3449MB | 1.658e+04MB |
| test_stable[msairsim-rob#3] | host | cpu_pct | 33% | 32.73% (t=10-60s) | 33.27% (t=70-120s) | 28.6% | 36.1% |
| test_stable[msairsim-rob#3] | host | mem_mb | 5566MB | 5548MB (t=10-60s) | 5583MB (t=70-120s) | 5501MB | 5603MB |
| test_stable[msairsim-rob#3] | host | gpu_pct | 53% | 53.83% (t=10-60s) | 52.17% (t=70-120s) | 45% | 59% |
| test_stable[msairsim-rob#3] | host | vram_mb | 847MB | 847MB (t=10-60s) | 847MB (t=70-120s) | 847MB | 847MB |
| test_stable[msairsim-rob#3] | host | gpu_temp_c | 36°C | 36°C (t=10-60s) | 36°C (t=70-120s) | 36°C | 36°C |
| test_stable[msairsim-rob#3] | host | gpu_power_w | 88.11W | 88.7W (t=10-60s) | 87.52W (t=70-120s) | 85.89W | 90.59W |
| test_stable[msairsim-rob#3] | airstack-robot-desktop | cpu_pct | 190.2% | 192.5% (t=10-60s) | 188% (t=70-120s) | 163.9% | 222.4% |
| test_stable[msairsim-rob#3] | airstack-robot-desktop | mem_mb | 683.3MB | 679.4MB (t=10-60s) | 687.3MB (t=70-120s) | 670.2MB | 701.6MB |
| test_stable[msairsim-rob#3] | airstack-robot-desktop | disk_io_mb | 14.71MB | 14.45MB (t=10-60s) | 14.96MB (t=70-120s) | 13.8MB | 16.6MB |
| test_stable[msairsim-rob#3] | airstack-robot-desktop | net_io_mb | 3444MB | 2225MB (t=10-60s) | 4662MB (t=70-120s) | 1132MB | 5833MB |
| test_stable[msairsim-rob#3] | airstack-gcs | cpu_pct | 145.3% | 151% (t=10-60s) | 139.6% (t=70-120s) | 104% | 198.8% |
| test_stable[msairsim-rob#3] | airstack-gcs | mem_mb | 419.7MB | 415.9MB (t=10-60s) | 423.4MB (t=70-120s) | 415.2MB | 440.3MB |
| test_stable[msairsim-rob#3] | airstack-gcs | disk_io_mb | 8.73MB | 8.65MB (t=10-60s) | 8.8MB (t=70-120s) | 8.594MB | 8.864MB |
| test_stable[msairsim-rob#3] | airstack-gcs | net_io_mb | 311.3MB | 200.4MB (t=10-60s) | 422.2MB (t=70-120s) | 112MB | 516MB |
| test_stable[isaacsim-rob#3] | isaac-sim | cpu_pct | 627.3% | 627.3% (t=10-60s) | 627.3% (t=70-120s) | 594.2% | 688.9% |
| test_stable[isaacsim-rob#3] | isaac-sim | mem_mb | 1.193e+04MB | 1.192e+04MB (t=10-60s) | 1.193e+04MB (t=70-120s) | 1.192e+04MB | 1.194e+04MB |
| test_stable[isaacsim-rob#3] | isaac-sim | disk_io_mb | 513.3MB | 465.1MB (t=10-60s) | 561.6MB (t=70-120s) | 425.1MB | 601.1MB |
| test_stable[isaacsim-rob#3] | isaac-sim | net_io_mb | 4.381e+04MB | 2.828e+04MB (t=10-60s) | 5.934e+04MB (t=70-120s) | 1.506e+04MB | 7.228e+04MB |
| test_stable[isaacsim-rob#3] | host | cpu_pct | 31.88% | 31.9% (t=10-60s) | 31.85% (t=70-120s) | 28.3% | 37% |
| test_stable[isaacsim-rob#3] | host | mem_mb | 1.836e+04MB | 1.835e+04MB (t=10-60s) | 1.836e+04MB (t=70-120s) | 1.83e+04MB | 1.841e+04MB |
| test_stable[isaacsim-rob#3] | host | gpu_pct | 29.17% | 30.33% (t=10-60s) | 28% (t=70-120s) | 25% | 32% |
| test_stable[isaacsim-rob#3] | host | vram_mb | 3560MB | 3560MB (t=10-60s) | 3560MB (t=70-120s) | 3560MB | 3560MB |
| test_stable[isaacsim-rob#3] | host | gpu_temp_c | 35.58°C | 35.33°C (t=10-60s) | 35.83°C (t=70-120s) | 35°C | 36°C |
| test_stable[isaacsim-rob#3] | host | gpu_power_w | 85.52W | 85.2W (t=10-60s) | 85.83W (t=70-120s) | 84.01W | 88.76W |
| test_stable[isaacsim-rob#3] | airstack-robot-desktop | cpu_pct | 173.5% | 171.9% (t=10-60s) | 175% (t=70-120s) | 116% | 211.5% |
| test_stable[isaacsim-rob#3] | airstack-robot-desktop | mem_mb | 686.8MB | 683.3MB (t=10-60s) | 690.3MB (t=70-120s) | 673.3MB | 703MB |
| test_stable[isaacsim-rob#3] | airstack-robot-desktop | disk_io_mb | 18.18MB | 18.05MB (t=10-60s) | 18.3MB (t=70-120s) | 14.7MB | 23MB |
| test_stable[isaacsim-rob#3] | airstack-robot-desktop | net_io_mb | 1.471e+04MB | 9504MB (t=10-60s) | 1.991e+04MB (t=70-120s) | 5063MB | 2.427e+04MB |
| test_stable[isaacsim-rob#3] | airstack-gcs | cpu_pct | 88.22% | 88.97% (t=10-60s) | 87.47% (t=70-120s) | 77.51% | 108.6% |
| test_stable[isaacsim-rob#3] | airstack-gcs | mem_mb | 416.2MB | 416.1MB (t=10-60s) | 416.3MB (t=70-120s) | 415.9MB | 416.7MB |
| test_stable[isaacsim-rob#3] | airstack-gcs | disk_io_mb | 10.07MB | 10MB (t=10-60s) | 10.15MB (t=70-120s) | 9.93MB | 10.2MB |
| test_stable[isaacsim-rob#3] | airstack-gcs | net_io_mb | 372.6MB | 267MB (t=10-60s) | 478.2MB (t=70-120s) | 180.1MB | 566MB |
test_takeoff_hover_land
Pass rates
| Test | Pass | Fail | Skip | Rate (baseline → current) |
|---|---|---|---|---|
| test_hover[isaacsim-rob#1-v0.5] | 0 → 1 | 0 → 0 | 0 → 0 | — → 100% |
| test_hover[isaacsim-rob#3-v0.5] | 0 → 1 | 0 → 0 | 0 → 0 | — → 100% |
| test_hover[msairsim-rob#1-v0.5] | 1 → 1 | 0 → 0 | 0 → 0 | 100% → 100% |
| test_hover[msairsim-rob#1-v1.0] | 1 → 0 | 0 → 0 | 0 → 0 | 100% → — |
| test_hover[msairsim-rob#1-v2.0] | 1 → 0 | 0 → 0 | 0 → 0 | 100% → — |
| test_hover[msairsim-rob#3-v0.5] | 0 → 1 | 0 → 0 | 0 → 0 | — → 100% |
| test_landing[isaacsim-rob#1-v0.5] | 0 → 1 | 0 → 0 | 0 → 0 | — → 100% |
| test_landing[isaacsim-rob#3-v0.5] | 0 → 1 | 0 → 0 | 0 → 0 | — → 100% |
| test_landing[msairsim-rob#1-v0.5] | 1 → 1 | 0 → 0 | 0 → 0 | 100% → 100% |
| test_landing[msairsim-rob#1-v1.0] | 1 → 0 | 0 → 0 | 0 → 0 | 100% → — |
| test_landing[msairsim-rob#1-v2.0] | 1 → 0 | 0 → 0 | 0 → 0 | 100% → — |
| test_landing[msairsim-rob#3-v0.5] | 0 → 1 | 0 → 0 | 0 → 0 | — → 100% |
| test_px4_ready[isaacsim-rob#1-v0.5] | 0 → 1 | 0 → 0 | 0 → 0 | — → 100% |
| test_px4_ready[isaacsim-rob#3-v0.5] | 0 → 1 | 0 → 0 | 0 → 0 | — → 100% |
| test_px4_ready[msairsim-rob#1-v0.5] | 1 → 1 | 0 → 0 | 0 → 0 | 100% → 100% |
| test_px4_ready[msairsim-rob#1-v1.0] | 1 → 0 | 0 → 0 | 0 → 0 | 100% → — |
| test_px4_ready[msairsim-rob#1-v2.0] | 1 → 0 | 0 → 0 | 0 → 0 | 100% → — |
| test_px4_ready[msairsim-rob#3-v0.5] | 0 → 1 | 0 → 0 | 0 → 0 | — → 100% |
| test_takeoff[isaacsim-rob#1-v0.5] | 0 → 1 | 0 → 0 | 0 → 0 | — → 100% |
| test_takeoff[isaacsim-rob#3-v0.5] | 0 → 1 | 0 → 0 | 0 → 0 | — → 100% |
| test_takeoff[msairsim-rob#1-v0.5] | 1 → 1 | 0 → 0 | 0 → 0 | 100% → 100% |
| test_takeoff[msairsim-rob#1-v1.0] | 1 → 0 | 0 → 0 | 0 → 0 | 100% → — |
| test_takeoff[msairsim-rob#1-v2.0] | 1 → 0 | 0 → 0 | 0 → 0 | 100% → — |
| test_takeoff[msairsim-rob#3-v0.5] | 0 → 1 | 0 → 0 | 0 → 0 | — → 100% |
Metrics
| Test | Metric | Baseline | Current | Change |
|---|---|---|---|---|
| test_px4_ready[isaacsim-rob#1-v0.5] | duration_s | — | 74.69s | new |
| test_px4_ready[isaacsim-rob#1-v0.5] | airstack_up_duration_s | — | 1.89s | new |
| test_px4_ready[isaacsim-rob#1-v0.5] | airstack_down_duration_s | — | 12.41s | new |
| test_px4_ready[isaacsim-rob#1-v0.5] | robot.ready_duration_sys_s | — | 72.3s | new |
| test_takeoff[isaacsim-rob#1-v0.5] | duration_s | — | 16.86s | new |
| test_takeoff[isaacsim-rob#1-v0.5] | robot.altitude_error_m | — | -0.113m | new |
| test_takeoff[isaacsim-rob#1-v0.5] | robot.overshoot_m | — | 0m | new |
| test_takeoff[isaacsim-rob#1-v0.5] | robot.takeoff_duration_sim_s | — | 17.88s | new |
| test_takeoff[isaacsim-rob#1-v0.5] | robot.velocity_rmse_m_sim_s | — | 0.111m/s | new |
| test_hover[isaacsim-rob#1-v0.5] | duration_s | — | 10.06s | new |
| test_hover[isaacsim-rob#1-v0.5] | robot.hover_altitude_mean_error_m | — | 0.011m | new |
| test_hover[isaacsim-rob#1-v0.5] | robot.hover_position_stddev_m | — | 0.052m | new |
| test_landing[isaacsim-rob#1-v0.5] | duration_s | — | 18.49s | new |
| test_landing[isaacsim-rob#1-v0.5] | robot.final_altitude_m | — | -0.002m | new |
| test_landing[isaacsim-rob#1-v0.5] | robot.land_duration_sim_s | — | 14.79s | new |
| test_landing[isaacsim-rob#1-v0.5] | robot.velocity_rmse_m_sim_s | — | 0.1m/s | new |
| test_px4_ready[isaacsim-rob#3-v0.5] | duration_s | — | 106.1s | new |
| test_px4_ready[isaacsim-rob#3-v0.5] | airstack_up_duration_s | — | 2.64s | new |
| test_px4_ready[isaacsim-rob#3-v0.5] | airstack_down_duration_s | — | 12.53s | new |
| test_px4_ready[isaacsim-rob#3-v0.5] | robot.ready_duration_sys_s | — | 80.28s | new |
| test_takeoff[isaacsim-rob#3-v0.5] | duration_s | — | 32.85s | new |
| test_takeoff[isaacsim-rob#3-v0.5] | robot.altitude_error_m | — | -0.149m | new |
| test_takeoff[isaacsim-rob#3-v0.5] | robot.overshoot_m | — | 0m | new |
| test_takeoff[isaacsim-rob#3-v0.5] | robot.takeoff_duration_sim_s | — | 17.73s | new |
| test_takeoff[isaacsim-rob#3-v0.5] | robot.velocity_rmse_m_sim_s | — | 0.105m/s | new |
| test_hover[isaacsim-rob#3-v0.5] | duration_s | — | 10.11s | new |
| test_hover[isaacsim-rob#3-v0.5] | robot.hover_altitude_mean_error_m | — | 0.019m | new |
| test_hover[isaacsim-rob#3-v0.5] | robot.hover_position_stddev_m | — | 0.017m | new |
| test_landing[isaacsim-rob#3-v0.5] | duration_s | — | 38.73s | new |
| test_landing[isaacsim-rob#3-v0.5] | robot.final_altitude_m | — | -0.004m | new |
| test_landing[isaacsim-rob#3-v0.5] | robot.land_duration_sim_s | — | 14.52s | new |
| test_landing[isaacsim-rob#3-v0.5] | robot.velocity_rmse_m_sim_s | — | 0.097m/s | new |
| test_px4_ready[msairsim-rob#1-v0.5] | duration_s | 215.2s | 25.15s | -88.3% 🟢 |
| test_px4_ready[msairsim-rob#1-v0.5] | airstack_up_duration_s | 3.22s | 1.79s | -44.4% 🟢 |
| test_px4_ready[msairsim-rob#1-v0.5] | airstack_down_duration_s | 11.02s | 10.93s | -0.8% |
| test_px4_ready[msairsim-rob#1-v0.5] | robot.ready_duration_sys_s | 211.3s | 10.35s | -95.1% 🟢 |
| test_takeoff[msairsim-rob#1-v0.5] | duration_s | 24.1s | 24.01s | -0.4% |
| test_takeoff[msairsim-rob#1-v0.5] | robot.altitude_error_m | -0.089m | -0.095m | +6.7% |
| test_takeoff[msairsim-rob#1-v0.5] | robot.overshoot_m | 0m | 0m | +0.0% |
| test_takeoff[msairsim-rob#1-v0.5] | robot.takeoff_duration_sim_s | 18.64s | 18.66s | +0.1% |
| test_takeoff[msairsim-rob#1-v0.5] | robot.velocity_rmse_m_sim_s | 0.217m/s | 0.213m/s | -1.8% |
| test_takeoff[msairsim-rob#1-v0.5] | robot.odometry_error_mean_m | 0.579m | 0.576m | -0.5% |
| test_takeoff[msairsim-rob#1-v0.5] | robot.odometry_error_max_m | 0.669m | 0.669m | +0.0% |
| test_takeoff[msairsim-rob#1-v0.5] | robot.odometry_altitude_bias_m | 0.575m | 0.571m | -0.7% |
| test_hover[msairsim-rob#1-v0.5] | duration_s | 10.06s | 10.09s | +0.3% |
| test_hover[msairsim-rob#1-v0.5] | robot.hover_altitude_mean_error_m | 0.046m | 0.091m | +97.8% 🔴 |
| test_hover[msairsim-rob#1-v0.5] | robot.hover_position_stddev_m | 0.023m | 0.053m | +130.4% 🔴 |
| test_hover[msairsim-rob#1-v0.5] | robot.odometry_error_mean_m | 0.674m | 0.685m | +1.6% |
| test_hover[msairsim-rob#1-v0.5] | robot.odometry_error_max_m | 0.696m | 0.703m | +1.0% |
| test_hover[msairsim-rob#1-v0.5] | robot.odometry_altitude_bias_m | 0.674m | 0.685m | +1.6% |
| test_landing[msairsim-rob#1-v0.5] | duration_s | 26.44s | 26.59s | +0.6% |
| test_landing[msairsim-rob#1-v0.5] | robot.final_altitude_m | -0.097m | -0.081m | -16.5% |
| test_landing[msairsim-rob#1-v0.5] | robot.land_duration_sim_s | 14.8s | 14.8s | -0.0% |
| test_landing[msairsim-rob#1-v0.5] | robot.velocity_rmse_m_sim_s | 0.226m/s | 0.242m/s | +7.1% |
| test_landing[msairsim-rob#1-v0.5] | robot.odometry_error_mean_m | 0.707m | 0.722m | +2.1% |
| test_landing[msairsim-rob#1-v0.5] | robot.odometry_error_max_m | 0.803m | 0.81m | +0.9% |
| test_landing[msairsim-rob#1-v0.5] | robot.odometry_altitude_bias_m | 0.706m | 0.722m | +2.3% |
| test_px4_ready[msairsim-rob#3-v0.5] | duration_s | — | 38.37s | new |
| test_px4_ready[msairsim-rob#3-v0.5] | airstack_up_duration_s | — | 2.6s | new |
| test_px4_ready[msairsim-rob#3-v0.5] | airstack_down_duration_s | — | 11.28s | new |
| test_px4_ready[msairsim-rob#3-v0.5] | robot.ready_duration_sys_s | — | 17.77s | new |
| test_takeoff[msairsim-rob#3-v0.5] | duration_s | — | 26.14s | new |
| test_takeoff[msairsim-rob#3-v0.5] | robot.altitude_error_m | — | -0.093m | new |
| test_takeoff[msairsim-rob#3-v0.5] | robot.overshoot_m | — | 0m | new |
| test_takeoff[msairsim-rob#3-v0.5] | robot.takeoff_duration_sim_s | — | 18.66s | new |
| test_takeoff[msairsim-rob#3-v0.5] | robot.velocity_rmse_m_sim_s | — | 0.207m/s | new |
| test_takeoff[msairsim-rob#3-v0.5] | robot.odometry_error_mean_m | — | 0.578m | new |
| test_takeoff[msairsim-rob#3-v0.5] | robot.odometry_error_max_m | — | 0.671m | new |
| test_takeoff[msairsim-rob#3-v0.5] | robot.odometry_altitude_bias_m | — | 0.574m | new |
| test_hover[msairsim-rob#3-v0.5] | duration_s | — | 10.22s | new |
| test_hover[msairsim-rob#3-v0.5] | robot.hover_altitude_mean_error_m | — | 0.074m | new |
| test_hover[msairsim-rob#3-v0.5] | robot.hover_position_stddev_m | — | 0.038m | new |
| test_hover[msairsim-rob#3-v0.5] | robot.odometry_error_mean_m | — | 0.683m | new |
| test_hover[msairsim-rob#3-v0.5] | robot.odometry_error_max_m | — | 0.707m | new |
| test_hover[msairsim-rob#3-v0.5] | robot.odometry_altitude_bias_m | — | 0.683m | new |
| test_landing[msairsim-rob#3-v0.5] | duration_s | — | 39.25s | new |
| test_landing[msairsim-rob#3-v0.5] | robot.final_altitude_m | — | -0.095m | new |
| test_landing[msairsim-rob#3-v0.5] | robot.land_duration_sim_s | — | 14.8s | new |
| test_landing[msairsim-rob#3-v0.5] | robot.velocity_rmse_m_sim_s | — | 0.208m/s | new |
| test_landing[msairsim-rob#3-v0.5] | robot.odometry_error_mean_m | — | 0.72m | new |
| test_landing[msairsim-rob#3-v0.5] | robot.odometry_error_max_m | — | 0.83m | new |
| test_landing[msairsim-rob#3-v0.5] | robot.odometry_altitude_bias_m | — | 0.719m | new |
| test_px4_ready[msairsim-rob#1-v1.0] | duration_s | 0.001s | — | removed |
| test_takeoff[msairsim-rob#1-v1.0] | duration_s | 16.82s | — | removed |
| test_takeoff[msairsim-rob#1-v1.0] | robot.altitude_error_m | -0.048m | — | removed |
| test_takeoff[msairsim-rob#1-v1.0] | robot.overshoot_m | 0m | — | removed |
| test_takeoff[msairsim-rob#1-v1.0] | robot.takeoff_duration_sim_s | 10.22s | — | removed |
| test_takeoff[msairsim-rob#1-v1.0] | robot.velocity_rmse_m_sim_s | 0.393m/s | — | removed |
| test_takeoff[msairsim-rob#1-v1.0] | robot.odometry_error_mean_m | 0.538m | — | removed |
| test_takeoff[msairsim-rob#1-v1.0] | robot.odometry_error_max_m | 0.684m | — | removed |
| test_takeoff[msairsim-rob#1-v1.0] | robot.odometry_altitude_bias_m | 0.538m | — | removed |
| test_hover[msairsim-rob#1-v1.0] | duration_s | 10.07s | — | removed |
| test_hover[msairsim-rob#1-v1.0] | robot.hover_altitude_mean_error_m | 0.127m | — | removed |
| test_hover[msairsim-rob#1-v1.0] | robot.hover_position_stddev_m | 0.06m | — | removed |
| test_hover[msairsim-rob#1-v1.0] | robot.odometry_error_mean_m | 0.697m | — | removed |
| test_hover[msairsim-rob#1-v1.0] | robot.odometry_error_max_m | 0.734m | — | removed |
| test_hover[msairsim-rob#1-v1.0] | robot.odometry_altitude_bias_m | 0.696m | — | removed |
| test_landing[msairsim-rob#1-v1.0] | duration_s | 17.34s | — | removed |
| test_landing[msairsim-rob#1-v1.0] | robot.final_altitude_m | -0.149m | — | removed |
| test_landing[msairsim-rob#1-v1.0] | robot.land_duration_sim_s | 7.2s | — | removed |
| test_landing[msairsim-rob#1-v1.0] | robot.velocity_rmse_m_sim_s | 0.436m/s | — | removed |
| test_landing[msairsim-rob#1-v1.0] | robot.odometry_error_mean_m | 0.679m | — | removed |
| test_landing[msairsim-rob#1-v1.0] | robot.odometry_error_max_m | 0.935m | — | removed |
| test_landing[msairsim-rob#1-v1.0] | robot.odometry_altitude_bias_m | 0.679m | — | removed |
| test_px4_ready[msairsim-rob#1-v2.0] | duration_s | 0.001s | — | removed |
| test_takeoff[msairsim-rob#1-v2.0] | duration_s | 15.89s | — | removed |
| test_takeoff[msairsim-rob#1-v2.0] | robot.altitude_error_m | -0.042m | — | removed |
| test_takeoff[msairsim-rob#1-v2.0] | robot.overshoot_m | 0m | — | removed |
| test_takeoff[msairsim-rob#1-v2.0] | robot.takeoff_duration_sim_s | 10.36s | — | removed |
| test_takeoff[msairsim-rob#1-v2.0] | robot.velocity_rmse_m_sim_s | 1.086m/s | — | removed |
| test_takeoff[msairsim-rob#1-v2.0] | robot.odometry_error_mean_m | 0.541m | — | removed |
| test_takeoff[msairsim-rob#1-v2.0] | robot.odometry_error_max_m | 0.684m | — | removed |
| test_takeoff[msairsim-rob#1-v2.0] | robot.odometry_altitude_bias_m | 0.541m | — | removed |
| test_hover[msairsim-rob#1-v2.0] | duration_s | 10.07s | — | removed |
| test_hover[msairsim-rob#1-v2.0] | robot.hover_altitude_mean_error_m | 0.165m | — | removed |
| test_hover[msairsim-rob#1-v2.0] | robot.hover_position_stddev_m | 0.083m | — | removed |
| test_hover[msairsim-rob#1-v2.0] | robot.odometry_error_mean_m | 0.712m | — | removed |
| test_hover[msairsim-rob#1-v2.0] | robot.odometry_error_max_m | 0.748m | — | removed |
| test_hover[msairsim-rob#1-v2.0] | robot.odometry_altitude_bias_m | 0.712m | — | removed |
| test_landing[msairsim-rob#1-v2.0] | duration_s | 26.67s | — | removed |
| test_landing[msairsim-rob#1-v2.0] | robot.final_altitude_m | -0.143m | — | removed |
| test_landing[msairsim-rob#1-v2.0] | robot.land_duration_sim_s | 6.678s | — | removed |
| test_landing[msairsim-rob#1-v2.0] | robot.velocity_rmse_m_sim_s | 0.944m/s | — | removed |
| test_landing[msairsim-rob#1-v2.0] | robot.odometry_error_mean_m | 0.684m | — | removed |
| test_landing[msairsim-rob#1-v2.0] | robot.odometry_error_max_m | 0.963m | — | removed |
| test_landing[msairsim-rob#1-v2.0] | robot.odometry_altitude_bias_m | 0.684m | — | removed |
docker
Metrics
| Test | Metric | Baseline | Current | Change |
|---|---|---|---|---|
| docker.gcs | image_size_mb | — | 2024MB | new |
| docker.isaac-sim | image_size_mb | — | 1.253e+04MB | new |
| docker.ms-airsim | image_size_mb | — | 4010MB | new |
Regression detected — some metrics exceeded the threshold.
There was a problem hiding this comment.
Pull request overview
This PR introduces a multi-robot GCS workflow centered around Foxglove: custom panels (waypoints/polygons/tasks), an action relay that bridges task actions across DDS domains, a GCS-side visualizer for unified multi-robot rendering (including a sim overhead “ground”), plus a new coordination/gossip layer for broadcasting peer state and typed payloads.
Changes:
- Adds Foxglove extensions + persisted waypoint/polygon editors, and wires them into the GCS container startup.
- Adds cross-domain action relaying (GCS domain 0 ↔ robot domain N) and expands GCS visualization / DDS allowlists for multi-robot use.
- Adds a new coordination/gossip layer (msgs + bringup + docs) and extends the random-walk planner to support polygon-bounded exploration.
Reviewed changes
Copilot reviewed 76 out of 95 changed files in this pull request and generated 7 comments.
Show a summary per file
| File | Description |
|---|---|
| simulation/isaac-sim/utils/scene_prep.py | Adds orthographic overhead camera publisher + USD root-prim helpers + collector/texture fixups |
| simulation/isaac-sim/launch_scripts/two_drone_scene_import.py | Removes legacy two-drone import script |
| simulation/isaac-sim/launch_scripts/gps_utils.py | Adds per-drone GPS-origin helpers for multi-drone scenes |
| simulation/isaac-sim/launch_scripts/example_multi_drone_scene_import.py | New reference multi-drone + scene import + overhead camera wiring |
| simulation/isaac-sim/launch_scripts/barebones_pegasus_launch.py | Adds PLAY_SIM_ON_START gating |
| simulation/isaac-sim/docker/docker-compose.yaml | Removes commented HITL service stub |
| robot/ros_ws/src/global/planners/random_walk/src/random_walk_node.cpp | Adds polygon bounds propagation + “approach polygon” pre-flight logic |
| robot/ros_ws/src/global/planners/random_walk/src/random_walk_logic.cpp | Adds point-in-polygon bounds checks + nearest-inside helper |
| robot/ros_ws/src/global/planners/random_walk/launch/random_walk_launch.xml | Updates launch remaps/paths for namespaced usage |
| robot/ros_ws/src/global/planners/random_walk/include/random_walk_node.hpp | Adds storage for pending bounds + mutex |
| robot/ros_ws/src/global/planners/random_walk/include/random_walk_logic.hpp | Adds polygon-bound API + makes mutex mutable for const methods |
| robot/ros_ws/src/global/planners/random_walk/config/random_walk_config.yaml | Adds new config keys and topics for random-walk node |
| robot/ros_ws/src/global/global_bringup/launch/global.launch.xml | Adjusts remaps/naming notes for namespaced random-walk planner |
| robot/ros_ws/src/autonomy_bringup/onboard_all/config/domain_bridge.yaml | Adds additional sim visualization topics to bridge |
| robot/ros_ws/src/autonomy_bringup/onboard_all/config/dds_router.yaml | Expands allowlist for cameras, trajectory vis, global plan; notes about gossip router separation |
| robot/ros_ws/src/autonomy_bringup/launch/robot.launch.xml | Adds coordination/gossip bringup include + args |
| robot/ros_ws/src/autonomy_bringup/launch/interpolate_dds_router.launch.py | Scopes LD_LIBRARY_PATH for ddsrouter execution |
| mkdocs.yml | Adds nav entries for new GCS/sim/coordination docs |
| gcs/saves/.gitkeep | Adds persistent save directory placeholder |
| gcs/ros_ws/src/gcs_visualizer/setup.py | New GCS visualizer ROS 2 Python package setup |
| gcs/ros_ws/src/gcs_visualizer/setup.cfg | New package install script config |
| gcs/ros_ws/src/gcs_visualizer/resource/gcs_visualizer | New ament resource marker |
| gcs/ros_ws/src/gcs_visualizer/package.xml | New package manifest for GCS visualization nodes |
| gcs/ros_ws/src/gcs_visualizer/launch/gcs_visualizer.launch.xml | Launches GCS visualizer + payload + waypoint/polygon collectors |
| gcs/ros_ws/src/gcs_visualizer/gcs_visualizer/waypoint_collector_node.py | Implements waypoint editor backend + save persistence + marker/path publishing |
| gcs/ros_ws/src/gcs_visualizer/gcs_visualizer/polygon_collector_node.py | Implements polygon editor backend + save persistence + marker publishing |
| gcs/ros_ws/src/gcs_visualizer/gcs_visualizer/payload_visualizer_node.py | Republishes gossip payloads per-robot/per-payload for Foxglove |
| gcs/ros_ws/src/gcs_visualizer/gcs_visualizer/gcs_utils.py | Adds shared GCS utilities (PC2→markers, transforms) |
| gcs/ros_ws/src/gcs_visualizer/gcs_visualizer/init.py | Package init |
| gcs/ros_ws/src/action_relay/setup.py | New action relay ROS 2 Python package setup |
| gcs/ros_ws/src/action_relay/setup.cfg | New package install script config |
| gcs/ros_ws/src/action_relay/resource/action_relay | New ament resource marker |
| gcs/ros_ws/src/action_relay/package.xml | New package manifest for action relay |
| gcs/ros_ws/src/action_relay/launch/action_relay.launch.py | Launches one relay instance per robot based on NUM_ROBOTS |
| gcs/ros_ws/src/action_relay/action_relay/init.py | Package init |
| gcs/foxglove_extensions/waypoint-editor/package.json | New Foxglove Waypoint Editor extension metadata |
| gcs/foxglove_extensions/waypoint-editor/dist/extension.js | Bundled Waypoint Editor panel implementation |
| gcs/foxglove_extensions/robot-commands/package.json | New/updated Robot Tasks extension metadata |
| gcs/foxglove_extensions/render_layout.py | Generates NUM_ROBOTS-matched Foxglove layout JSON |
| gcs/foxglove_extensions/polygon-editor/package.json | New Foxglove Polygon Editor extension metadata |
| gcs/foxglove_extensions/polygon-editor/dist/extension.js | Bundled Polygon Editor panel implementation |
| gcs/foxglove_extensions/install.sh | Installs unpacked Foxglove extensions into Foxglove Studio extensions dir |
| gcs/docker/gcs-base-docker-compose.yaml | Runs extension install + layout render; mounts saves + extensions; exports NUM_ROBOTS |
| docs/simulation/isaac_sim/spawning_drones.md | Documents multi-drone spawning + GPS origins pattern |
| docs/simulation/isaac_sim/overhead_camera.md | Documents overhead camera producer and Foxglove ground rendering |
| docs/robot/autonomy/coordination/payloads.md | Documents config-driven gossip payloads + GCS visualization handlers |
| docs/robot/autonomy/coordination/index.md | Documents coordination layer architecture and usage |
| docs/gcs/waypoints_and_geofences.md | Documents waypoint/polygon editor workflow + persistence |
| docs/gcs/foxglove.md | Documents GCS visualizer topics, discovery, and layout behavior |
| common/ros_packages/robot_descriptions/launch/robot_state_publisher.launch.py | Adjusts URDF lookup logic/package reference text |
| common/ros_packages/robot_descriptions/CMakeLists.txt | Minor trailing whitespace change |
| common/ros_packages/msgs/task_msgs/action/SemanticSearchTask.action | Updates semantic-search goal fields and defaults (adds background_queries) |
| common/ros_packages/gui/rviz/rviz_tasks_panel/src/tasks_panel.cpp | Updates RViz task panel fields for semantic search changes |
| common/ros_packages/desktop_bringup/params/domain_bridge.yaml | Minor formatting change |
| common/ros_packages/desktop_bringup/package.xml | Adds deps for new GCS-side components |
| common/ros_packages/desktop_bringup/launch/gcs.launch.xml | Launches Foxglove + bridge + gossip bridge + gcs_visualizer + action_relay |
| common/ros_packages/coordination/README.md | Adds coordination layer README |
| common/ros_packages/coordination/coordination_msgs/package.xml | New coordination_msgs package manifest |
| common/ros_packages/coordination/coordination_msgs/msg/PeerProfilePayload.msg | New payload wire-format message |
| common/ros_packages/coordination/coordination_msgs/msg/PeerProfile.msg | New peer profile wire-format message |
| common/ros_packages/coordination/coordination_msgs/CMakeLists.txt | Builds/generates coordination messages |
| common/ros_packages/coordination/coordination_bringup/setup.py | New coordination_bringup Python package setup |
| common/ros_packages/coordination/coordination_bringup/scripts/peer_registry_monitor.py | Adds CLI monitor for peer registry |
| common/ros_packages/coordination/coordination_bringup/scripts/gossip_node | Adds gossip_node entry script |
| common/ros_packages/coordination/coordination_bringup/resource/coordination_bringup | New ament resource marker |
| common/ros_packages/coordination/coordination_bringup/package.xml | New bringup package manifest |
| common/ros_packages/coordination/coordination_bringup/launch/gossip.launch.xml | Launches per-robot gossip router + gossip node |
| common/ros_packages/coordination/coordination_bringup/launch/gcs_gossip_bridge.launch.py | Launches GCS-side gossip DDS router |
| common/ros_packages/coordination/coordination_bringup/coordination_bringup/peer_profile.py | Adds PeerProfile helper API for payload serialization |
| common/ros_packages/coordination/coordination_bringup/coordination_bringup/gossip_node.py | Implements gossip publishing, payload attachment, registry maintenance |
| common/ros_packages/coordination/coordination_bringup/coordination_bringup/frame_utils.py | Shared GPS/ENU + message transform helpers |
| common/ros_packages/coordination/coordination_bringup/coordination_bringup/init.py | Package init |
| common/ros_packages/coordination/coordination_bringup/config/gossip_payloads.yaml | Adds config-driven payload declaration file |
| common/ros_packages/coordination/coordination_bringup/config/gossip_dds_router.yaml | Adds per-robot gossip DDS router config |
| common/ros_packages/coordination/coordination_bringup/config/gcs_gossip_dds_router.yaml | Adds GCS-side gossip DDS router config |
| AGENTS.md | Adds new skills to agent index |
| .gitmodules | Minor trailing whitespace change |
| .gitignore | Ignores local scenes + persisted GCS saves |
| .env | Bumps version and changes defaults (NUM_ROBOTS, sim script) |
| .agents/skills/visualize-in-foxglove/SKILL.md | Adds skill doc for Foxglove visualization workflow |
| .agents/skills/attach-gossip-payload/SKILL.md | Adds skill doc for adding gossip payloads end-to-end |
Comments suppressed due to low confidence (1)
robot/ros_ws/src/global/planners/random_walk/include/random_walk_node.hpp:40
- This header now includes twice (once newly added and once already present). Please drop the duplicate include to keep the header tidy and avoid redundant work for compilers/unity builds.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| // Reject points outside the goal's search_bounds polygon (XY footprint | ||
| // in robot-local map). Empty polygon → no-op. | ||
| if (!point_in_search_bounds(std::get<0>(point), std::get<1>(point))) | ||
| { | ||
| return true; | ||
| } | ||
|
|
||
| std::lock_guard<std::mutex> lock(this->mutex); |
| sub_map_topic: "vdb_map_visualization" | ||
| sub_odometry_topic: "odometry" | ||
| sub_robot_tf_topic: "/tf" | ||
| srv_random_walk_toggle_topic: "~/global_plan_toggle" | ||
|
|
| <depend>rclpy</depend> | ||
| <depend>sensor_msgs</depend> | ||
| <depend>nav_msgs</depend> | ||
| <depend>visualization_msgs</depend> | ||
| <depend>geometry_msgs</depend> | ||
| <depend>builtin_interfaces</depend> | ||
| <depend>tf2_ros</depend> |
| # Use relative path within autonomy_bringup package | ||
| urdf_file = PathJoinSubstitution([ | ||
| FindPackageShare('robot_bringup'), | ||
| FindPackageShare('autonomy_bringup'), | ||
| 'urdf', | ||
| urdf_file_path | ||
| ]) |
| # Current GPS position from interface/mavros/global_position/raw/fix | ||
| # gps_fix.header.stamp carries the NavSatFix timestamp |
| collector = Collector( | ||
| usd_path=source_usd_url, | ||
| collect_dir=output_dir, | ||
| usd_only=False, # include textures, MDLs, etc. | ||
| flat_collection=False, # preserve source folder hierarchy | ||
| flat_collection=True, # preserve source folder hierarchy | ||
| skip_existing=False, |
| # ================= Common =================== | ||
| AUTOLAUNCH="true" # If false, the docker-compose will just spawn idle docker containers with no launch command. | ||
| NUM_ROBOTS="1" # Number of robot containers to launch. | ||
| NUM_ROBOTS="2" # Number of robot containers to launch. | ||
| RECORD_BAGS="false" # "true" or "false" | ||
|
|
||
| # ============== ISAAC SIM ===================== | ||
| ISAAC_SIM_GUI="/isaac-sim/AirStack/simulation/isaac-sim/assets/scenes/simple_pegasus.scene.usd" | ||
| # Set to "true" to launch Isaac Sim using a standalone Python script instead of USD file | ||
| ISAAC_SIM_USE_STANDALONE="true" # "true" or "false" | ||
| # Script name (must be in /AirStack/simulation/isaac-sim/launch_scripts/) | ||
| ISAAC_SIM_SCRIPT_NAME="example_one_px4_pegasus_launch_script.py" | ||
| ISAAC_SIM_SCRIPT_NAME="example_multi_drone_scene_import.py" #"example_one_px4_pegasus_launch_script.py" | ||
| PLAY_SIM_ON_START="false" | ||
|
|
||
| # =============================================== | ||
|
|
||
| # ================= MS-AIRSIM ===================== | ||
| # Do not set if you want airstack to fetch a simple blocks world. | ||
| # MS_AIRSIM_ENV_DIR=./simulation/ms-airsim/assets/scenes | ||
| # MS_AIRSIM_BINARY_PATH="/ms-airsim-env/Blocks/LinuxNoEditor/Blocks.sh" | ||
| # ================================================= | ||
| # =================================================airst | ||
|
|
| og.Controller.Keys.SET_VALUES: [ | ||
| (("inputs:domain_id", nodes["context"]), int(domain_id)), | ||
| (("inputs:cameraPrim", nodes["create_rp"]), camera_prim_path), | ||
| (("inputs:width", nodes["create_rp"]), res), | ||
| (("inputs:height", nodes["create_rp"]), res), | ||
| (("inputs:type", nodes["rgb"]), "rgb"), | ||
| (("inputs:value", nodes["frame"]), str(frame_id)), | ||
| (("inputs:value", nodes["topic"]), str(topic)), | ||
| (("inputs:value", nodes["spec_value"]), float(coverage_m)), | ||
| (("inputs:value", nodes["spec_topic"]), str(spec_topic)), | ||
| (("inputs:messageName", nodes["spec_pub"]), "Float32"), | ||
| (("inputs:messagePackage", nodes["spec_pub"]), "std_msgs"), | ||
| (("inputs:messageSubfolder", nodes["spec_pub"]), "msg"), | ||
| ], |
| period = 1.0 / max(publish_rate, 0.01) | ||
| self._publish_timer = self.create_timer(period, self._publish_tick, clock=ROSClock()) | ||
| self._drain_timer = self.create_timer(0.2, self._drain_peer_inbox, clock=ROSClock()) |
| tests_require=['pytest'], | ||
| entry_points={ | ||
| 'console_scripts': [ | ||
| 'gossip_node = coordination_bringup.gossip_node:main', |
| import math | ||
| import copy | ||
| import struct | ||
|
|
||
| from coordination_bringup.frame_utils import ( | ||
| gps_to_enu as _gps_to_enu_abs, | ||
| heading_to_quat, | ||
| rotate_vector, | ||
| transform_marker_array, | ||
| transform_point_cloud2 as _transform_pc2, | ||
| ) |
| ### Path B — Translate and republish via robot_marker_node | ||
|
|
||
| **File:** `gcs/ros_ws/src/gcs_visualizer/gcs_visualizer/robot_marker_node.py` | ||
|
|
||
| This node auto-discovers robot topics, applies a GPS boot offset to convert from the | ||
| robot's local odom frame to ENU (map frame), and republishes everything as a single | ||
| `/gcs/robot_markers` MarkerArray. |
| ### 4a — Read the payload type from `gossip_payloads.yaml` | ||
|
|
||
| Open `robot/ros_ws/src/coordination/coordination_bringup/config/gossip_payloads.yaml` | ||
| and note the `type:` field for your new entry. This determines how to deserialize it. | ||
|
|
| def main(): | ||
| ap = argparse.ArgumentParser() | ||
| ap.add_argument('--input', default=os.environ.get( | ||
| 'LAYOUT_TEMPLATE', | ||
| '/root/AirStack/gcs/foxglove_extensions/airstack_default.json')) | ||
| ap.add_argument('--output', default=os.environ.get( | ||
| 'LAYOUT_OUTPUT', | ||
| '/root/AirStack/gcs/foxglove_extensions/airstack_default.json')) | ||
| ap.add_argument('--num-robots', type=int, |
| }, true}, | ||
| {"Semantic Search", "tasks/semantic_search", { | ||
| {"query", "string", 0, 0, 0}, | ||
| {"background_queries", "string", 0, 0, 0}, |
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
# Conflicts: # simulation/isaac-sim/launch_scripts/two_drone_scene_import.py
Advance to 8e01d013 (main's pointer) which contains spawn_rtx_lidar.py, required by example_one_px4_pegasus_launch_script.py and the multi script after the rtx-lidar update merged from main. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- gossip_node: swap startup log + outgoing-stamp clock to STEADY_TIME so the dedup-by-stamp invariant survives /clock pauses; subscribe to /global_position/global to match foxglove_visualizer and action_relay - gossip_node docstring: drop the false "waypoint triggers immediate publish" claim - coordination README: rename peer_registry node block to the actual per-robot registry topic; "wall-clock" -> "steady" - package.xml: add missing exec/depend rules - coordination_bringup -> autonomy_bringup - autonomy_bringup -> coordination_bringup - desktop_bringup -> coordination_bringup, gcs_visualizer - gcs_visualizer -> std_msgs, coordination_msgs, coordination_bringup - task_msgs: replace TODO license with BSD-3-Clause - gcs.launch.xml: comment had `--no-sandbox` (`--` is illegal inside an XML comment and crashed the ROS launch parser) Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
… override - payload_visualizer_node: remove unused PointCloud2 / transform_point_cloud2 imports (F401), collapse Marker/MarkerArray - action_relay launch: ROBOT_RELAY_MAP env override for non-default robot_name -> domain mappings (default behavior unchanged) - desktop_bringup robot.rviz: drop BehaviorTreePanel entry pointing at /behavior/behavior_tree_graphviz (publisher package was removed) - autonomy_bringup domain_bridge: bridge /global_position/global to match the dds_router and the rest of the stack (was /raw/fix) Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- render_layout: regex now strips every trailing _r<n> (was: only the last one), fixes _r1_r1_r1... stacking on repeated runs - render_layout: atomic write via tmp + os.replace so a partial json.dump doesn't corrupt the layout file - airstack_default.json: re-render with fixed stripper to commit a clean source template (no stacked _r1 suffixes) - install.sh -> install.py: file is Python, shebang is python3 - install.py: slugify publisher into the on-disk extension dir name so "AirLab CMU" doesn't produce a directory with a space - drop robot-commands/robot-commands.foxe (duplicate; canonical is at foxglove_extensions/robot-commands.foxe) and the .foxe.bak Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
What does this pull request do?
gcs/foxglove_extensions/):robot-commands(per-robot task tabs with multi-feedback feed),waypoint-editor,polygon-editor. Auto-installed into Foxglove on container start viainstall.sh.gcs/ros_ws/src/action_relay/): bridges Foxglove JSON-on-String goals to per-robot action servers across DDS domains; cancel-aware with 10 s timeout fallback.gcs/ros_ws/src/gcs_visualizer/): multi-robot markers in one 3D namespace, per-robot/gcs/<robot>/locationrepublisher withmapframe, save markers for waypoints/polygons,sim_groundTRIANGLE_LISTfrom the sim overhead camera.common/ros_packages/coordination/): gossip node +PeerProfile+ configurable typed payloads (gossip_payloads.yaml).simulation/isaac-sim/utils/scene_prep.py):add_orthographic_camera+add_overhead_camera_publisher(publishes/sim/overhead/{image,spec});robot/ros_ws/src/global/planners/random_walk/): point-in-polygon search bounds, auto-navigate to nearest inside point pre-flight.gcs/saves/mounted into the GCS container.Which issue number does this address?
Video can be found here
Videos + photos in the updated docs
How did you implement it?
relay_node.py): a single Python process spins up actx0(GCS, domain 0) executor and onectxN(per-robot, domain N) executor; reads JSON goal/cancel from/<robot>/tasks/<task>String topics, builds the typed action goal,forwards to the robot-domain action client, and re-publishes feedback/result as JSON.
NUM_ROBOTSenv spawns the right set of relays.install.sh, which copies each unpacked extension into~/.foxglove-studio/extensions/<publisher>.<name>-<version>/at container start (mounted read-only fromgcs/foxglove_extensions/)./<robot>/odometry_conversion/odometrytopics; per-robot color from a fixed palette; world→map static TF published once on the GCS side.OVERHEAD_ALTITUDE_Mover (0,0); OmniGraphROS2CameraHelperpublishes a JPEG to/sim/overhead/imageand aFloat32coverage spec to/sim/overhead/spec. GCS side downsamples to aMarker.TRIANGLE_LISTgrid (overhead_grid_per_m, capped atoverhead_max_grid_resolution) so it stays cheap in Foxglove's 3D panel.random_walk_logic.cpp::point_in_search_bounds; nearest-inside-point pre-flight dispatched via the navigate action client.Testing
How do you run the tests?
peer_profileterminal viewer.gossip_payloads.yamland a VDB map payload to confirm the gossip layer handles arbitrary user-declared types end-to-end.What do the tests do?
Cover the GCS-side critical paths added by this PR: action relay (goal / feedback / result / cancel), polygon + waypoint editor + saves persistence, multi-robot visualizer, top-down sim map publisher, and the gossip payload pipeline.
What are the expected results of the tests?
gcs/savesmount.sim_groundrenders without dropping frames in Foxglove 3D across all tested scenes.PeerProfilereaches every other robot with all declared payloads attached, regardless of payload type.Reproducing tests
.env:NUM_ROBOTS=4
ISAAC_SIM_SCRIPT_NAME="example_multi_drone_scene_import.py"
Bring up the stack:
The Foxglove window should auto-connect to ws://localhost:8765 and open the AirStack default layout from the CMU org.
Fallback: open the dynamically-generated layout manually
Use this if Foxglove doesn't auto-connect or you want to use the locally-rendered, NUM_ROBOTS-matched layout instead of the cloud one.
- Inside the GCS container: /root/AirStack/gcs/foxglove_extensions/airstack_default.json
- On the host: gcs/foxglove_extensions/airstack_default.json
- ws://localhost:8765 if Foxglove is running inside the GCS container
- ws://localhost:8766 if Foxglove is running on the host
Did you update the docs (and under what path)?
New pages:
docs/gcs/foxglove.md— GCS Foxglove visualization (multi-robot markers, payload republishing, sim ground)docs/gcs/waypoints_and_geofences.md— click-to-place Waypoint and Polygon editor workflow + saves persistencedocs/simulation/isaac_sim/spawning_drones.md— multi-drone scene authoring withgps_utils.set_gps_originsdocs/simulation/isaac_sim/overhead_camera.md— 2D world map in Foxglove (real-world satellite tiles + simulated overheadcamera)
Updated:
docs/robot/autonomy/coordination/index.md— gossip protocol overview (already wired in nav)docs/robot/autonomy/coordination/payloads.md— how to add a custom payload + Foxglove handlermkdocs.yml— nav entries for the four new pages, underGround Control Station → FoxgloveandSimulation → Isaac SimSkills (
.agents/skills/):attach-gossip-payload/— agent workflow for adding a payload end-to-endvisualize-in-foxglove/— agent workflow for adding a topic to the GCS visualizer