Skip to content

Johnliu/px4 cpu optimization#348

Merged
andrewjong merged 17 commits intomainfrom
johnliu/px4_cpu_optimization
Apr 30, 2026
Merged

Johnliu/px4 cpu optimization#348
andrewjong merged 17 commits intomainfrom
johnliu/px4_cpu_optimization

Conversation

@JohnYanxinLiu
Copy link
Copy Markdown
Collaborator

What does this pull request do?

Sets the PX4 IMU INTEGRATION rate setting in simulation. This allows the user to specify the physics step frequency in isaac-sim. The PX4 physics step frequency is now set to 100 Hz by default to drastically speed up Isaac-sim performance. This pull request also freezes the DDS router at v3.4.0 to remain compatible with isaac-sim.

Which issue number does this address?

Add videos and images if possible.

How did you implement it?

Currently, Dockerfile.isaac-ros patches the PX4 repository with a 1-line change in the simulation startup script to read from an environment variable PX4_IMU_INTEG_RATE after cloning to bake the change into the image. PegasusSimulator was adjusted to set the environment variable before launching PX4 in a subprocess.

Testing

How do you run the tests?
Typical test of airstack up, then arming + takeoff, and exploring.
Also, able to run the benchmark suite in PegasusSimulator now.
docker exec isaac-sim bash -c \ "/isaac-sim/python.sh /isaac-sim/AirStack/simulation/isaac-sim/extensions/PegasusSimulator/benchmarking/run_all.py"

What do the tests do?
the benchmarking script will run a benchmark of tests on the system and give an insight to how close to real time one can get on their system.

What are the expected results of the tests?
The lower the physics step frequency specified, the closer to real time you should be able to get. However, from a quick search with CLAUDE, the PX4 EKF works with windows of 10ms, of which 100Hz will result in that minimum 10ms period window. Setting it lower may lead to unintended effects.

Did you update the docs (and where)?

(FYI Docs are updated via mkdocs.yml and markdown files under docs/. It should render at localhost:8000 when you run docker compose up docs.)

@JohnYanxinLiu JohnYanxinLiu requested review from andrewjong, Copilot and krrishj18 and removed request for Copilot April 29, 2026 14:36
@github-actions
Copy link
Copy Markdown

Test Metrics — a427354c2bbad7108e8f4a7d78c1beb74de9a110

test_build_docker

Pass rates

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 791.8s new
test_build_gcs duration_s 310.7s new
test_build_isaac_sim duration_s 715.2s new
test_build_ms_airsim duration_s 226.5s new

test_build_packages

Pass rates

Test Pass Fail Skip Rate (baseline → current)
test_colcon_build_gcs 0 → 0 0 → 1 0 → 0 — → 0%
test_colcon_build_ms_airsim 0 → 1 0 → 0 0 → 0 — → 100%
test_colcon_build_robot 0 → 0 0 → 1 0 → 0 — → 0%

Metrics

Test Metric Baseline Current Change
test_colcon_build_robot duration_s 27.64s new
test_colcon_build_gcs duration_s 25.73s new
test_colcon_build_ms_airsim duration_s 12.95s new

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 4008MB new

@github-actions
Copy link
Copy Markdown

Test Metrics — 6f3fc385d7342dec04f9c72b3d233f10f8c42714

test_build_docker

Pass rates

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 763.3s new
test_build_gcs duration_s 37.86s new
test_build_isaac_sim duration_s 169.2s new
test_build_ms_airsim duration_s 52.39s new

test_build_packages

Pass rates

Test Pass Fail Skip Rate (baseline → current)
test_colcon_build_gcs 0 → 0 0 → 1 0 → 0 — → 0%
test_colcon_build_ms_airsim 0 → 1 0 → 0 0 → 0 — → 100%
test_colcon_build_robot 0 → 0 0 → 1 0 → 0 — → 0%

Metrics

Test Metric Baseline Current Change
test_colcon_build_robot duration_s 163.7s new
test_colcon_build_gcs duration_s 32.34s new
test_colcon_build_ms_airsim duration_s 12.95s new

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 4008MB new

@github-actions
Copy link
Copy Markdown

Test Metrics — bc8032416cc525b443a16178b1b52c042ebc5cfb

test_build_docker

Pass rates

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 568s new
test_build_gcs duration_s 42.73s new
test_build_isaac_sim duration_s 180.3s new
test_build_ms_airsim duration_s 33.37s new

test_build_packages

Pass rates

Test Pass Fail Skip Rate (baseline → current)
test_colcon_build_gcs 0 → 0 0 → 1 0 → 0 — → 0%
test_colcon_build_ms_airsim 0 → 1 0 → 0 0 → 0 — → 100%
test_colcon_build_robot 0 → 0 0 → 1 0 → 0 — → 0%

Metrics

Test Metric Baseline Current Change
test_colcon_build_robot duration_s 124.7s new
test_colcon_build_gcs duration_s 26.52s new
test_colcon_build_ms_airsim duration_s 12.79s new

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 4008MB new

@github-actions
Copy link
Copy Markdown

Test Metrics — 622270d1e90c1bb914c4f04d004374cf618e7f25

@github-actions
Copy link
Copy Markdown

Test Metrics — 26e761442b235f83b176caf6bf49760aaf754c93

test_build_docker

Pass rates

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 73.25s new
test_build_gcs duration_s 42.85s new
test_build_isaac_sim duration_s 486.5s new
test_build_ms_airsim duration_s 29.96s 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 169.6s new
test_colcon_build_gcs duration_s 57.14s new
test_colcon_build_ms_airsim duration_s 12.58s new

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 4008MB new

@JohnYanxinLiu JohnYanxinLiu force-pushed the johnliu/px4_cpu_optimization branch from 98ecff2 to 2f50a26 Compare April 30, 2026 19:10
@github-actions
Copy link
Copy Markdown

Test Metrics — c58e7cb6cc8d2c3743ff5c8c0428bc7759efb865

test_build_docker

Pass rates

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 72.33s new
test_build_gcs duration_s 38.2s new
test_build_isaac_sim duration_s 152.1s new
test_build_ms_airsim duration_s 31.19s 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 175.8s new
test_colcon_build_gcs duration_s 60.42s new
test_colcon_build_ms_airsim duration_s 13.2s new

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 4008MB new

@github-actions
Copy link
Copy Markdown

Test Metrics — 20e137b08f61a1c5cff40c0dad5edfb5d394f496

@github-actions
Copy link
Copy Markdown

Test Metrics — 838db8f7386f0c21f378b7d74f686b180484d5cd

test_build_docker

Pass rates

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 93.72s new
test_build_gcs duration_s 39.79s new
test_build_isaac_sim duration_s 161s new
test_build_ms_airsim duration_s 30.01s 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 169.1s new
test_colcon_build_gcs duration_s 56.64s new
test_colcon_build_ms_airsim duration_s 12.55s new

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 4008MB new

@JohnYanxinLiu JohnYanxinLiu force-pushed the johnliu/px4_cpu_optimization branch from e68d763 to b6ca4a1 Compare April 30, 2026 21:06
@andrewjong
Copy link
Copy Markdown
Member

/pytest -m 'build_packages or liveliness or takeoff_hover_land' --sim isaacsim

@github-actions
Copy link
Copy Markdown

Running pytest tests/ -m 'build_packages or liveliness or takeoff_hover_land' --sim isaacsimview run. Status will appear as a check on this PR.

@github-actions
Copy link
Copy Markdown

Test Metrics — 08ac1717180ae5776c9a62c9287b4aadb5c9d0c3

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 167.9s new
test_colcon_build_gcs duration_s 57.27s new
test_colcon_build_ms_airsim duration_s 39.8s new

test_liveliness

Pass rates

Test Pass Fail Skip Rate (baseline → current)
test_compute_usage[isaacsim-rob#1] 0 → 3 0 → 0 0 → 0 — → 100%
test_compute_usage[isaacsim-rob#3] 0 → 3 0 → 0 0 → 0 — → 100%
test_gcs_container_running[isaacsim-rob#1] 0 → 3 0 → 0 0 → 0 — → 100%
test_gcs_container_running[isaacsim-rob#3] 0 → 3 0 → 0 0 → 0 — → 100%
test_realtime_factor[isaacsim-rob#1] 0 → 2 0 → 1 0 → 0 — → 67%
test_realtime_factor[isaacsim-rob#3] 0 → 3 0 → 0 0 → 0 — → 100%
test_robot_containers_running[isaacsim-rob#1] 0 → 3 0 → 0 0 → 0 — → 100%
test_robot_containers_running[isaacsim-rob#3] 0 → 3 0 → 0 0 → 0 — → 100%
test_sentinel_nodes_present[isaacsim-rob#1] 0 → 3 0 → 0 0 → 0 — → 100%
test_sentinel_nodes_present[isaacsim-rob#3] 0 → 3 0 → 0 0 → 0 — → 100%
test_sim_container_running[isaacsim-rob#1] 0 → 3 0 → 0 0 → 0 — → 100%
test_sim_container_running[isaacsim-rob#3] 0 → 3 0 → 0 0 → 0 — → 100%
test_sim_publishing[isaacsim-rob#1] 0 → 2 0 → 1 0 → 0 — → 67%
test_sim_publishing[isaacsim-rob#3] 0 → 3 0 → 0 0 → 0 — → 100%
test_sim_ready_time[isaacsim-rob#1] 0 → 3 0 → 0 0 → 0 — → 100%
test_sim_ready_time[isaacsim-rob#3] 0 → 3 0 → 0 0 → 0 — → 100%
test_stable[isaacsim-rob#1] 0 → 2 0 → 0 0 → 1 — → 100%
test_stable[isaacsim-rob#3] 0 → 3 0 → 0 0 → 0 — → 100%
test_tmux_panes_have_expected_processes[isaacsim-rob#1] 0 → 3 0 → 0 0 → 0 — → 100%
test_tmux_panes_have_expected_processes[isaacsim-rob#3] 0 → 3 0 → 0 0 → 0 — → 100%

Metrics

Test Metric Baseline Current Change
test_robot_containers_running[isaacsim-rob#1] duration_s 10.52s ± 5.9 (n=3/3) new
test_robot_containers_running[isaacsim-rob#1] airstack_up_duration_s 1.75s ± 0.036 (n=3/3) new
test_robot_containers_running[isaacsim-rob#1] airstack_down_duration_s 12.43s ± 0.2 (n=3/3) new
test_sim_container_running[isaacsim-rob#1] duration_s 0.019s ± 0 (n=3/3) new
test_gcs_container_running[isaacsim-rob#1] duration_s 0.044s ± 0.001 (n=3/3) new
test_sim_ready_time[isaacsim-rob#1] duration_s 55.81s ± 17 (n=3/3) new
test_sim_ready_time[isaacsim-rob#1] sim_ready_duration_s 57.67s ± 17 (n=3/3) new
test_tmux_panes_have_expected_processes[isaacsim-rob#1] duration_s 0.185s ± 0.012 (n=3/3) new
test_sim_publishing[isaacsim-rob#1] duration_s 10.62s ± 0.056 (n=3/3) new
test_compute_usage[isaacsim-rob#1] duration_s 2.656s ± 0.013 (n=3/3) new
test_realtime_factor[isaacsim-rob#1] duration_s 17.06s ± 8.1 (n=3/3) new
test_realtime_factor[isaacsim-rob#1] sim.realtime_factor 1.65 ± 0.051 (n=2/3, 1 miss) new
test_sentinel_nodes_present[isaacsim-rob#1] duration_s 5.282s ± 2.8 (n=3/3) new
test_stable[isaacsim-rob#1] duration_s 193.1s ± 1.4e+02 (n=3/3) new
test_robot_containers_running[isaacsim-rob#3] duration_s 15.85s ± 0.3 (n=3/3) new
test_robot_containers_running[isaacsim-rob#3] airstack_up_duration_s 2.663s ± 0.012 (n=3/3) new
test_robot_containers_running[isaacsim-rob#3] airstack_down_duration_s 12.65s ± 0.25 (n=3/3) new
test_sim_container_running[isaacsim-rob#3] duration_s 0.028s ± 0.004 (n=3/3) new
test_gcs_container_running[isaacsim-rob#3] duration_s 0.068s ± 0.003 (n=3/3) new
test_sim_ready_time[isaacsim-rob#3] duration_s 67.6s ± 0.77 (n=3/3) new
test_sim_ready_time[isaacsim-rob#3] sim_ready_duration_s 70.5s ± 0.75 (n=3/3) new
test_tmux_panes_have_expected_processes[isaacsim-rob#3] duration_s 0.353s ± 0.011 (n=3/3) new
test_sim_publishing[isaacsim-rob#3] duration_s 10.63s ± 0.026 (n=3/3) new
test_compute_usage[isaacsim-rob#3] duration_s 2.678s ± 0.006 (n=3/3) new
test_realtime_factor[isaacsim-rob#3] duration_s 24.38s ± 2.5 (n=3/3) new
test_realtime_factor[isaacsim-rob#3] sim.realtime_factor 0.758 ± 0.007 (n=3/3) new
test_sentinel_nodes_present[isaacsim-rob#3] duration_s 11.53s ± 0.038 (n=3/3) new
test_stable[isaacsim-rob#3] duration_s 315.7s ± 5.8 (n=3/3) new

Sim publishing rates (baseline n=None, current n=3; baseline → current, per-topic)

Test Topic mean start_mean end_mean min max
test_stable[isaacsim-rob#1] clock 50.08Hz 49.92Hz (t=10-60s) 50.23Hz (t=70-120s) 44.24Hz 59.53Hz
test_stable[isaacsim-rob#1] robot.sensors.front_stereo.left.image_rect 50.4Hz 50.85Hz (t=10-60s) 49.94Hz (t=70-120s) 41.76Hz 62.81Hz
test_stable[isaacsim-rob#1] robot.sensors.front_stereo.right.image_rect 49.45Hz 50.94Hz (t=10-60s) 47.96Hz (t=70-120s) 40.29Hz 59.05Hz
test_stable[isaacsim-rob#1] robot.sensors.front_stereo.left.depth_ground_truth 44.39Hz 44.94Hz (t=10-60s) 43.84Hz (t=70-120s) 31.71Hz 59.25Hz
test_stable[isaacsim-rob#1] robot.sensors.front_stereo.right.depth_ground_truth 42.33Hz 42.85Hz (t=10-60s) 41.8Hz (t=70-120s) 23.62Hz 52.33Hz
test_stable[isaacsim-rob#3] clock 23.83Hz 24.17Hz (t=10-60s) 23.49Hz (t=70-120s) 21.89Hz 26.45Hz
test_stable[isaacsim-rob#3] robot.sensors.front_stereo.left.image_rect 22.97Hz 23.09Hz (t=10-60s) 22.85Hz (t=70-120s) 17.25Hz 26.75Hz
test_stable[isaacsim-rob#3] robot.sensors.front_stereo.right.image_rect 22.74Hz 23.1Hz (t=10-60s) 22.38Hz (t=70-120s) 16.46Hz 26.73Hz
test_stable[isaacsim-rob#3] robot.sensors.front_stereo.left.depth_ground_truth 18.25Hz 17.62Hz (t=10-60s) 18.89Hz (t=70-120s) 9.424Hz 25.64Hz
test_stable[isaacsim-rob#3] robot.sensors.front_stereo.right.depth_ground_truth 18.23Hz 18.98Hz (t=10-60s) 17.48Hz (t=70-120s) 9.741Hz 26.13Hz

Compute usage (baseline n=None, current n=3; baseline → current, per-container and global)

Test Entity Metric mean start_mean end_mean min max
test_stable[isaacsim-rob#1] isaac-sim cpu_pct 708% 711.5% (t=10-60s) 704.5% (t=70-120s) 672% 766.1%
test_stable[isaacsim-rob#1] isaac-sim mem_mb 1.122e+04MB 1.123e+04MB (t=10-60s) 1.122e+04MB (t=70-120s) 1.121e+04MB 1.128e+04MB
test_stable[isaacsim-rob#1] isaac-sim disk_io_mb 518.9MB 487MB (t=10-60s) 550.9MB (t=70-120s) 459.5MB 577.5MB
test_stable[isaacsim-rob#1] isaac-sim net_io_mb 1.38e+04MB 8845MB (t=10-60s) 1.875e+04MB (t=70-120s) 4680MB 2.284e+04MB
test_stable[isaacsim-rob#1] host cpu_pct 25.1% 24.54% (t=10-60s) 25.66% (t=70-120s) 22.3% 28.5%
test_stable[isaacsim-rob#1] host mem_mb 1.58e+04MB 1.578e+04MB (t=10-60s) 1.581e+04MB (t=70-120s) 1.572e+04MB 1.602e+04MB
test_stable[isaacsim-rob#1] host gpu_pct 28.96% 29.59% (t=10-60s) 28.33% (t=70-120s) 26% 32%
test_stable[isaacsim-rob#1] host vram_mb 3469MB 3469MB (t=10-60s) 3469MB (t=70-120s) 3469MB 3469MB
test_stable[isaacsim-rob#1] host gpu_temp_c 41.88°C 41.58°C (t=10-60s) 42.16°C (t=70-120s) 40.5°C 42.5°C
test_stable[isaacsim-rob#1] host gpu_power_w 89.23W 89.29W (t=10-60s) 89.18W (t=70-120s) 87.18W 92.71W
test_stable[isaacsim-rob#1] airstack-robot-desktop cpu_pct 251.3% 255.4% (t=10-60s) 247.1% (t=70-120s) 230.1% 271.4%
test_stable[isaacsim-rob#1] airstack-robot-desktop mem_mb 684.1MB 681.6MB (t=10-60s) 686.6MB (t=70-120s) 677.5MB 694MB
test_stable[isaacsim-rob#1] airstack-robot-desktop disk_io_mb 71.22MB 71.14MB (t=10-60s) 71.31MB (t=70-120s) 71.05MB 71.4MB
test_stable[isaacsim-rob#1] airstack-robot-desktop net_io_mb 1.378e+04MB 8834MB (t=10-60s) 1.873e+04MB (t=70-120s) 4669MB 2.288e+04MB
test_stable[isaacsim-rob#1] airstack-gcs cpu_pct 0% 0% (t=10-60s) 0% (t=70-120s) 0% 0%
test_stable[isaacsim-rob#1] airstack-gcs mem_mb 18.75MB 18.75MB (t=10-60s) 18.75MB (t=70-120s) 18.75MB 18.75MB
test_stable[isaacsim-rob#1] airstack-gcs disk_io_mb 24.3MB 24.3MB (t=10-60s) 24.3MB (t=70-120s) 24.3MB 24.3MB
test_stable[isaacsim-rob#1] airstack-gcs net_io_mb 1.335MB 0.96MB (t=10-60s) 1.715MB (t=70-120s) 0.653MB 2.025MB
test_stable[isaacsim-rob#3] isaac-sim cpu_pct 623.2% 623.1% (t=10-60s) 623.3% (t=70-120s) 597.5% 656.9%
test_stable[isaacsim-rob#3] isaac-sim mem_mb 1.184e+04MB 1.184e+04MB (t=10-60s) 1.185e+04MB (t=70-120s) 1.183e+04MB 1.185e+04MB
test_stable[isaacsim-rob#3] isaac-sim disk_io_mb 708MB 658.5MB (t=10-60s) 757.6MB (t=70-120s) 615.9MB 798.6MB
test_stable[isaacsim-rob#3] isaac-sim net_io_mb 2.193e+04MB 1.42e+04MB (t=10-60s) 2.967e+04MB (t=70-120s) 7639MB 3.606e+04MB
test_stable[isaacsim-rob#3] host cpu_pct 29.84% 29.49% (t=10-60s) 30.2% (t=70-120s) 26.93% 33.8%
test_stable[isaacsim-rob#3] host mem_mb 1.775e+04MB 1.774e+04MB (t=10-60s) 1.776e+04MB (t=70-120s) 1.769e+04MB 1.781e+04MB
test_stable[isaacsim-rob#3] host gpu_pct 30.58% 30.33% (t=10-60s) 30.83% (t=70-120s) 25% 35.67%
test_stable[isaacsim-rob#3] host vram_mb 3859MB 3859MB (t=10-60s) 3859MB (t=70-120s) 3859MB 3859MB
test_stable[isaacsim-rob#3] host gpu_temp_c 41.06°C 40.89°C (t=10-60s) 41.22°C (t=70-120s) 40°C 42°C
test_stable[isaacsim-rob#3] host gpu_power_w 87.68W 87.36W (t=10-60s) 88W (t=70-120s) 85.94W 89.73W
test_stable[isaacsim-rob#3] airstack-robot-desktop cpu_pct 173.7% 175% (t=10-60s) 172.4% (t=70-120s) 137.2% 214.6%
test_stable[isaacsim-rob#3] airstack-robot-desktop mem_mb 648.3MB 645.7MB (t=10-60s) 651MB (t=70-120s) 640MB 668.8MB
test_stable[isaacsim-rob#3] airstack-robot-desktop disk_io_mb 25.04MB 24.86MB (t=10-60s) 25.23MB (t=70-120s) 15.1MB 41.91MB
test_stable[isaacsim-rob#3] airstack-robot-desktop net_io_mb 7313MB 4735MB (t=10-60s) 9892MB (t=70-120s) 2535MB 1.208e+04MB
test_stable[isaacsim-rob#3] airstack-gcs cpu_pct 0% 0% (t=10-60s) 0% (t=70-120s) 0% 0%
test_stable[isaacsim-rob#3] airstack-gcs mem_mb 18.16MB 18.16MB (t=10-60s) 18.16MB (t=70-120s) 18.16MB 18.16MB
test_stable[isaacsim-rob#3] airstack-gcs disk_io_mb 3.05MB 3.05MB (t=10-60s) 3.05MB (t=70-120s) 3.051MB 3.051MB
test_stable[isaacsim-rob#3] airstack-gcs net_io_mb 4.063MB 2.903MB (t=10-60s) 5.227MB (t=70-120s) 1.933MB 6.197MB

test_takeoff_hover_land

Pass rates

Test Pass Fail Skip Rate (baseline → current)
test_hover[isaacsim-rob#1-v0.5] 0 → 3 0 → 0 0 → 0 — → 100%
test_hover[isaacsim-rob#1-v1.0] 0 → 3 0 → 0 0 → 0 — → 100%
test_hover[isaacsim-rob#1-v2.0] 0 → 3 0 → 0 0 → 0 — → 100%
test_hover[isaacsim-rob#3-v0.5] 0 → 3 0 → 0 0 → 0 — → 100%
test_hover[isaacsim-rob#3-v1.0] 0 → 3 0 → 0 0 → 0 — → 100%
test_hover[isaacsim-rob#3-v2.0] 0 → 3 0 → 0 0 → 0 — → 100%
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[isaacsim-rob#1-v0.5] 0 → 3 0 → 0 0 → 0 — → 100%
test_landing[isaacsim-rob#1-v1.0] 0 → 3 0 → 0 0 → 0 — → 100%
test_landing[isaacsim-rob#1-v2.0] 0 → 3 0 → 0 0 → 0 — → 100%
test_landing[isaacsim-rob#3-v0.5] 0 → 3 0 → 0 0 → 0 — → 100%
test_landing[isaacsim-rob#3-v1.0] 0 → 3 0 → 0 0 → 0 — → 100%
test_landing[isaacsim-rob#3-v2.0] 0 → 3 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[isaacsim-rob#1-v0.5] 0 → 3 0 → 0 0 → 0 — → 100%
test_px4_ready[isaacsim-rob#1-v1.0] 0 → 3 0 → 0 0 → 0 — → 100%
test_px4_ready[isaacsim-rob#1-v2.0] 0 → 3 0 → 0 0 → 0 — → 100%
test_px4_ready[isaacsim-rob#3-v0.5] 0 → 3 0 → 0 0 → 0 — → 100%
test_px4_ready[isaacsim-rob#3-v1.0] 0 → 3 0 → 0 0 → 0 — → 100%
test_px4_ready[isaacsim-rob#3-v2.0] 0 → 3 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[isaacsim-rob#1-v0.5] 0 → 3 0 → 0 0 → 0 — → 100%
test_takeoff[isaacsim-rob#1-v1.0] 0 → 3 0 → 0 0 → 0 — → 100%
test_takeoff[isaacsim-rob#1-v2.0] 0 → 3 0 → 0 0 → 0 — → 100%
test_takeoff[isaacsim-rob#3-v0.5] 0 → 3 0 → 0 0 → 0 — → 100%
test_takeoff[isaacsim-rob#3-v1.0] 0 → 3 0 → 0 0 → 0 — → 100%
test_takeoff[isaacsim-rob#3-v2.0] 0 → 3 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[isaacsim-rob#1-v0.5] duration_s 83.84s ± 4.6 (n=3/3) new
test_px4_ready[isaacsim-rob#1-v0.5] airstack_up_duration_s 1.743s ± 0.017 (n=3/3) new
test_px4_ready[isaacsim-rob#1-v0.5] airstack_down_duration_s 12.33s ± 0.008 (n=3/3) new
test_px4_ready[isaacsim-rob#1-v0.5] robot.ready_duration_sys_s 73.42s ± 1.4 (n=3/3) new
test_takeoff[isaacsim-rob#1-v0.5] duration_s 16.71s ± 0.69 (n=3/3) new
test_takeoff[isaacsim-rob#1-v0.5] robot.altitude_error_m -0.128m ± 0.01 (n=3/3) new
test_takeoff[isaacsim-rob#1-v0.5] robot.overshoot_m 0m ± 0 (n=3/3) new
test_takeoff[isaacsim-rob#1-v0.5] robot.takeoff_duration_sim_s 18.04s ± 0.075 (n=3/3) new
test_takeoff[isaacsim-rob#1-v0.5] robot.velocity_rmse_m_sim_s 0.105m/s ± 0.002 (n=3/3) new
test_hover[isaacsim-rob#1-v0.5] duration_s 10.06s ± 0.001 (n=3/3) new
test_hover[isaacsim-rob#1-v0.5] robot.hover_altitude_mean_error_m 0.017m ± 0.013 (n=3/3) new
test_hover[isaacsim-rob#1-v0.5] robot.hover_position_stddev_m 0.049m ± 0.014 (n=3/3) new
test_landing[isaacsim-rob#1-v0.5] duration_s 18.21s ± 0.91 (n=3/3) new
test_landing[isaacsim-rob#1-v0.5] robot.final_altitude_m -0.013m ± 0.014 (n=3/3) new
test_landing[isaacsim-rob#1-v0.5] robot.land_duration_sim_s 14.81s ± 0.051 (n=3/3) new
test_landing[isaacsim-rob#1-v0.5] robot.velocity_rmse_m_sim_s 0.099m/s ± 0.001 (n=3/3) new
test_px4_ready[isaacsim-rob#1-v1.0] duration_s 0.001s ± 0 (n=3/3) new
test_takeoff[isaacsim-rob#1-v1.0] duration_s 11.8s ± 0.5 (n=3/3) new
test_takeoff[isaacsim-rob#1-v1.0] robot.altitude_error_m -0.134m ± 0.003 (n=3/3) new
test_takeoff[isaacsim-rob#1-v1.0] robot.overshoot_m 0m ± 0 (n=3/3) new
test_takeoff[isaacsim-rob#1-v1.0] robot.takeoff_duration_sim_s 10.22s ± 0.028 (n=3/3) new
test_takeoff[isaacsim-rob#1-v1.0] robot.velocity_rmse_m_sim_s 0.23m/s ± 0.001 (n=3/3) new
test_hover[isaacsim-rob#1-v1.0] duration_s 10.06s ± 0 (n=3/3) new
test_hover[isaacsim-rob#1-v1.0] robot.hover_altitude_mean_error_m 0.034m ± 0.012 (n=3/3) new
test_hover[isaacsim-rob#1-v1.0] robot.hover_position_stddev_m 0.055m ± 0.018 (n=3/3) new
test_landing[isaacsim-rob#1-v1.0] duration_s 12.37s ± 0.73 (n=3/3) new
test_landing[isaacsim-rob#1-v1.0] robot.final_altitude_m -0.012m ± 0.008 (n=3/3) new
test_landing[isaacsim-rob#1-v1.0] robot.land_duration_sim_s 7.41s ± 0.024 (n=3/3) new
test_landing[isaacsim-rob#1-v1.0] robot.velocity_rmse_m_sim_s 0.199m/s ± 0.002 (n=3/3) new
test_px4_ready[isaacsim-rob#1-v2.0] duration_s 0.001s ± 0 (n=3/3) new
test_takeoff[isaacsim-rob#1-v2.0] duration_s 11.78s ± 0.46 (n=3/3) new
test_takeoff[isaacsim-rob#1-v2.0] robot.altitude_error_m -0.133m ± 0.011 (n=3/3) new
test_takeoff[isaacsim-rob#1-v2.0] robot.overshoot_m 0m ± 0 (n=3/3) new
test_takeoff[isaacsim-rob#1-v2.0] robot.takeoff_duration_sim_s 10.27s ± 0.014 (n=3/3) new
test_takeoff[isaacsim-rob#1-v2.0] robot.velocity_rmse_m_sim_s 1.096m/s ± 0.001 (n=3/3) new
test_hover[isaacsim-rob#1-v2.0] duration_s 10.06s ± 0.004 (n=3/3) new
test_hover[isaacsim-rob#1-v2.0] robot.hover_altitude_mean_error_m 0.016m ± 0.009 (n=3/3) new
test_hover[isaacsim-rob#1-v2.0] robot.hover_position_stddev_m 0.053m ± 0.007 (n=3/3) new
test_landing[isaacsim-rob#1-v2.0] duration_s 11.89s ± 0.67 (n=3/3) new
test_landing[isaacsim-rob#1-v2.0] robot.final_altitude_m -0.021m ± 0.012 (n=3/3) new
test_landing[isaacsim-rob#1-v2.0] robot.land_duration_sim_s 7.28s ± 0.028 (n=3/3) new
test_landing[isaacsim-rob#1-v2.0] robot.velocity_rmse_m_sim_s 0.971m/s ± 0.002 (n=3/3) new
test_px4_ready[isaacsim-rob#3-v0.5] duration_s 104s ± 3.2 (n=3/3) new
test_px4_ready[isaacsim-rob#3-v0.5] airstack_up_duration_s 2.643s ± 0.025 (n=3/3) new
test_px4_ready[isaacsim-rob#3-v0.5] airstack_down_duration_s 12.46s ± 0.017 (n=3/3) new
test_px4_ready[isaacsim-rob#3-v0.5] robot.ready_duration_sys_s 78.08s ± 0.77 (n=3/3) new
test_takeoff[isaacsim-rob#3-v0.5] duration_s 31.96s ± 0.34 (n=3/3) new
test_takeoff[isaacsim-rob#3-v0.5] robot.altitude_error_m -0.152m ± 0.007 (n=3/3) new
test_takeoff[isaacsim-rob#3-v0.5] robot.overshoot_m 0m ± 0 (n=3/3) new
test_takeoff[isaacsim-rob#3-v0.5] robot.takeoff_duration_sim_s 17.72s ± 0.3 (n=3/3) new
test_takeoff[isaacsim-rob#3-v0.5] robot.velocity_rmse_m_sim_s 0.105m/s ± 0.002 (n=3/3) new
test_hover[isaacsim-rob#3-v0.5] duration_s 10.14s ± 0.02 (n=3/3) new
test_hover[isaacsim-rob#3-v0.5] robot.hover_altitude_mean_error_m 0.017m ± 0.005 (n=3/3) new
test_hover[isaacsim-rob#3-v0.5] robot.hover_position_stddev_m 0.03m ± 0.008 (n=3/3) new
test_landing[isaacsim-rob#3-v0.5] duration_s 37.26s ± 1.3 (n=3/3) new
test_landing[isaacsim-rob#3-v0.5] robot.final_altitude_m 0.011m ± 0.016 (n=3/3) new
test_landing[isaacsim-rob#3-v0.5] robot.land_duration_sim_s 14.8s ± 0.075 (n=3/3) new
test_landing[isaacsim-rob#3-v0.5] robot.velocity_rmse_m_sim_s 0.098m/s ± 0.001 (n=3/3) new
test_px4_ready[isaacsim-rob#3-v1.0] duration_s 0.001s ± 0 (n=3/3) new
test_takeoff[isaacsim-rob#3-v1.0] duration_s 24.14s ± 1.2 (n=3/3) new
test_takeoff[isaacsim-rob#3-v1.0] robot.altitude_error_m -0.16m ± 0.002 (n=3/3) new
test_takeoff[isaacsim-rob#3-v1.0] robot.overshoot_m 0m ± 0 (n=3/3) new
test_takeoff[isaacsim-rob#3-v1.0] robot.takeoff_duration_sim_s 10.26s ± 0.042 (n=3/3) new
test_takeoff[isaacsim-rob#3-v1.0] robot.velocity_rmse_m_sim_s 0.232m/s ± 0.003 (n=3/3) new
test_hover[isaacsim-rob#3-v1.0] duration_s 10.12s ± 0.007 (n=3/3) new
test_hover[isaacsim-rob#3-v1.0] robot.hover_altitude_mean_error_m 0.013m ± 0.002 (n=3/3) new
test_hover[isaacsim-rob#3-v1.0] robot.hover_position_stddev_m 0.032m ± 0.002 (n=3/3) new
test_landing[isaacsim-rob#3-v1.0] duration_s 24.03s ± 1.1 (n=3/3) new
test_landing[isaacsim-rob#3-v1.0] robot.final_altitude_m 0.025m ± 0.019 (n=3/3) new
test_landing[isaacsim-rob#3-v1.0] robot.land_duration_sim_s 7.12s ± 0.31 (n=3/3) new
test_landing[isaacsim-rob#3-v1.0] robot.velocity_rmse_m_sim_s 0.191m/s ± 0 (n=3/3) new
test_px4_ready[isaacsim-rob#3-v2.0] duration_s 0.001s ± 0 (n=3/3) new
test_takeoff[isaacsim-rob#3-v2.0] duration_s 24.92s ± 0.68 (n=3/3) new
test_takeoff[isaacsim-rob#3-v2.0] robot.altitude_error_m -0.164m ± 0.003 (n=3/3) new
test_takeoff[isaacsim-rob#3-v2.0] robot.overshoot_m 0m ± 0 (n=3/3) new
test_takeoff[isaacsim-rob#3-v2.0] robot.takeoff_duration_sim_s 10.2s ± 0.024 (n=3/3) new
test_takeoff[isaacsim-rob#3-v2.0] robot.velocity_rmse_m_sim_s 1.088m/s ± 0.001 (n=3/3) new
test_hover[isaacsim-rob#3-v2.0] duration_s 10.12s ± 0.003 (n=3/3) new
test_hover[isaacsim-rob#3-v2.0] robot.hover_altitude_mean_error_m 0.021m ± 0.008 (n=3/3) new
test_hover[isaacsim-rob#3-v2.0] robot.hover_position_stddev_m 0.025m ± 0.004 (n=3/3) new
test_landing[isaacsim-rob#3-v2.0] duration_s 27.46s ± 5.8 (n=3/3) new
test_landing[isaacsim-rob#3-v2.0] robot.final_altitude_m 0.003m ± 0.013 (n=3/3) new
test_landing[isaacsim-rob#3-v2.0] robot.land_duration_sim_s 6.63s ± 0.48 (n=3/3) new
test_landing[isaacsim-rob#3-v2.0] robot.velocity_rmse_m_sim_s 0.973m/s ± 0.004 (n=3/3) new
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

@andrewjong
Copy link
Copy Markdown
Member

This is cool, the tests show realtime_factor is roughly 0.75 with John's update, which is x2 as good as the previous 0.38 real time factor we were empirically experiencing before.

@andrewjong andrewjong merged commit 92708d5 into main Apr 30, 2026
1 check 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.

2 participants