UnitCompose CI demos / navigation

Navigation YAML A/B

One compiled binary, two YAML Modules, two independently measured behaviors.

commit 93d38190866a | rustc 1.89.0 (29483883e 2025-08-04) | generated 2026-08-20 08:11:11 UTC

Group A: A* + smoothing

Inflation radius 1 | 4 Units | final path condensed by line of sight

VS
Group B: Dijkstra, no smoothing

Inflation radius 0 | 3 Units | raw path published directly

Measured comparison

MetricGroup AGroup BScope

True path overlay

Group AGroup BShared binary occupancy map

Prepared topology

Group A

flowchart TD
  unit_6465636f6465["decode<br/>Unit<br/>nav.ros_map_decoder/v1"]:::unit
  unit_696e666c617465["inflate<br/>Unit<br/>nav.binary_inflation/v1"]:::unit
  unit_706c616e["plan<br/>Unit<br/>nav.astar/v1"]:::unit
  unit_736d6f6f7468["smooth<br/>Unit<br/>nav.line_of_sight_smoother/v1"]:::unit
  resource_62696e6172795f6d6170{{"binary_map<br/>Module output<br/>nav.BinaryMap/v1"}}:::moduleOutput
  unit_6465636f6465 -->|map| resource_62696e6172795f6d6170
  resource_62696e6172795f6d6170 -->|map| unit_696e666c617465
  resource_636f73745f6d6170{{"cost_map<br/>Module output<br/>nav.BinaryMap/v1"}}:::moduleOutput
  unit_696e666c617465 -->|cost_map| resource_636f73745f6d6170
  resource_636f73745f6d6170 -->|cost_map| unit_706c616e
  resource_636f73745f6d6170 -->|cost_map| unit_736d6f6f7468
  resource_6f63637570616e63795f67726964[/"occupancy_grid<br/>Module input<br/>nav.RosOccupancyGrid/v1"/]:::moduleInput
  resource_6f63637570616e63795f67726964 -->|grid| unit_6465636f6465
  resource_7261775f70617468{{"raw_path<br/>Module output<br/>nav.Path/v1"}}:::moduleOutput
  unit_706c616e -->|path| resource_7261775f70617468
  resource_7261775f70617468 -->|path| unit_736d6f6f7468
  resource_736d6f6f746865645f70617468{{"smoothed_path<br/>Module output<br/>nav.Path/v1"}}:::moduleOutput
  unit_736d6f6f7468 -->|path| resource_736d6f6f746865645f70617468
  classDef unit fill:#eef2ff,stroke:#4338ca,stroke-width:1px
  classDef resource fill:#f8fafc,stroke:#64748b,stroke-width:1px
  classDef moduleInput fill:#ecfdf5,stroke:#047857,stroke-width:2px
  classDef moduleOutput fill:#fff7ed,stroke:#c2410c,stroke-width:3px
  classDef moduleInputOutput fill:#fefce8,stroke:#a16207,stroke-width:3px

Group B

flowchart TD
  unit_6465636f6465["decode<br/>Unit<br/>nav.ros_map_decoder/v1"]:::unit
  unit_696e666c617465["inflate<br/>Unit<br/>nav.binary_inflation/v1"]:::unit
  unit_706c616e["plan<br/>Unit<br/>nav.dijkstra/v1"]:::unit
  resource_62696e6172795f6d6170{{"binary_map<br/>Module output<br/>nav.BinaryMap/v1"}}:::moduleOutput
  unit_6465636f6465 -->|map| resource_62696e6172795f6d6170
  resource_62696e6172795f6d6170 -->|map| unit_696e666c617465
  resource_636f73745f6d6170{{"cost_map<br/>Module output<br/>nav.BinaryMap/v1"}}:::moduleOutput
  unit_696e666c617465 -->|cost_map| resource_636f73745f6d6170
  resource_636f73745f6d6170 -->|cost_map| unit_706c616e
  resource_6f63637570616e63795f67726964[/"occupancy_grid<br/>Module input<br/>nav.RosOccupancyGrid/v1"/]:::moduleInput
  resource_6f63637570616e63795f67726964 -->|grid| unit_6465636f6465
  resource_7261775f70617468{{"raw_path<br/>Module output<br/>nav.Path/v1"}}:::moduleOutput
  unit_706c616e -->|path| resource_7261775f70617468
  classDef unit fill:#eef2ff,stroke:#4338ca,stroke-width:1px
  classDef resource fill:#f8fafc,stroke:#64748b,stroke-width:1px
  classDef moduleInput fill:#ecfdf5,stroke:#047857,stroke-width:2px
  classDef moduleOutput fill:#fff7ed,stroke:#c2410c,stroke-width:3px
  classDef moduleInputOutput fill:#fefce8,stroke:#a16207,stroke-width:3px

Measured Unit timing

Group A

flowchart TD
  unit_6465636f6465["decode<br/>Unit<br/>nav.ros_map_decoder/v1<br/>avg 19.6 us / p99 33.0 us / n=1000"]:::unit
  unit_696e666c617465["inflate<br/>Unit<br/>nav.binary_inflation/v1<br/>avg 253.7 us / p99 270.3 us / n=1000"]:::unit
  unit_706c616e["plan<br/>Unit<br/>nav.astar/v1<br/>avg 61.0 us / p99 159.9 us / n=1000"]:::unit
  unit_736d6f6f7468["smooth<br/>Unit<br/>nav.line_of_sight_smoother/v1<br/>avg 2.6 us / p99 5.3 us / n=1000"]:::unit
  resource_62696e6172795f6d6170{{"binary_map<br/>Module output<br/>nav.BinaryMap/v1"}}:::moduleOutput
  unit_6465636f6465 -->|map| resource_62696e6172795f6d6170
  resource_62696e6172795f6d6170 -->|map| unit_696e666c617465
  resource_636f73745f6d6170{{"cost_map<br/>Module output<br/>nav.BinaryMap/v1"}}:::moduleOutput
  unit_696e666c617465 -->|cost_map| resource_636f73745f6d6170
  resource_636f73745f6d6170 -->|cost_map| unit_706c616e
  resource_636f73745f6d6170 -->|cost_map| unit_736d6f6f7468
  resource_6f63637570616e63795f67726964[/"occupancy_grid<br/>Module input<br/>nav.RosOccupancyGrid/v1"/]:::moduleInput
  resource_6f63637570616e63795f67726964 -->|grid| unit_6465636f6465
  resource_7261775f70617468{{"raw_path<br/>Module output<br/>nav.Path/v1"}}:::moduleOutput
  unit_706c616e -->|path| resource_7261775f70617468
  resource_7261775f70617468 -->|path| unit_736d6f6f7468
  resource_736d6f6f746865645f70617468{{"smoothed_path<br/>Module output<br/>nav.Path/v1"}}:::moduleOutput
  unit_736d6f6f7468 -->|path| resource_736d6f6f746865645f70617468
  classDef unit fill:#eef2ff,stroke:#4338ca,stroke-width:1px
  classDef resource fill:#f8fafc,stroke:#64748b,stroke-width:1px
  classDef moduleInput fill:#ecfdf5,stroke:#047857,stroke-width:2px
  classDef moduleOutput fill:#fff7ed,stroke:#c2410c,stroke-width:3px
  classDef moduleInputOutput fill:#fefce8,stroke:#a16207,stroke-width:3px

Group B

flowchart TD
  unit_6465636f6465["decode<br/>Unit<br/>nav.ros_map_decoder/v1<br/>avg 19.7 us / p99 32.6 us / n=1000"]:::unit
  unit_696e666c617465["inflate<br/>Unit<br/>nav.binary_inflation/v1<br/>avg 1.3 us / p99 1.8 us / n=1000"]:::unit
  unit_706c616e["plan<br/>Unit<br/>nav.dijkstra/v1<br/>avg 236.3 us / p99 552.0 us / n=1000"]:::unit
  resource_62696e6172795f6d6170{{"binary_map<br/>Module output<br/>nav.BinaryMap/v1"}}:::moduleOutput
  unit_6465636f6465 -->|map| resource_62696e6172795f6d6170
  resource_62696e6172795f6d6170 -->|map| unit_696e666c617465
  resource_636f73745f6d6170{{"cost_map<br/>Module output<br/>nav.BinaryMap/v1"}}:::moduleOutput
  unit_696e666c617465 -->|cost_map| resource_636f73745f6d6170
  resource_636f73745f6d6170 -->|cost_map| unit_706c616e
  resource_6f63637570616e63795f67726964[/"occupancy_grid<br/>Module input<br/>nav.RosOccupancyGrid/v1"/]:::moduleInput
  resource_6f63637570616e63795f67726964 -->|grid| unit_6465636f6465
  resource_7261775f70617468{{"raw_path<br/>Module output<br/>nav.Path/v1"}}:::moduleOutput
  unit_706c616e -->|path| resource_7261775f70617468
  classDef unit fill:#eef2ff,stroke:#4338ca,stroke-width:1px
  classDef resource fill:#f8fafc,stroke:#64748b,stroke-width:1px
  classDef moduleInput fill:#ecfdf5,stroke:#047857,stroke-width:2px
  classDef moduleOutput fill:#fff7ed,stroke:#c2410c,stroke-width:3px
  classDef moduleInputOutput fill:#fefce8,stroke:#a16207,stroke-width:3px

Independent Rerun recordings

Each recording has its own event timeline because the final paths contain different point counts.

Group A recording

Open the downloaded Group A recording with Rerun 0.24.1.

Group B recording

Open the downloaded Group B recording with Rerun 0.24.1.

Exact artifacts