Skip to content

MIGHTY is the default local planner; DROAN extracted to the asm_droan module (0.21.0-dev.11) - #424

Merged
andrewjong merged 1 commit into
developfrom
feat/mighty-default-local-planner
Sep 11, 2026
Merged

andrewjong merged 1 commit into
developfrom
feat/mighty-default-local-planner

Conversation

@andrewjong

@andrewjong andrewjong commented Sep 11, 2026 •

Copy link
Copy Markdown
Member

Summary

MIGHTY becomes AirStack's default local planner; DROAN leaves trunk as the asm_droan module.

  • Default stack swap. full_default, lite_default and lite_offload_global:onboard now include the MIGHTY module launch (mighty_module.launch.xml: planner + acl-mapping voxel world model + NavigateTask bridge, CPU-only, lidar-fed) in place of droan_gl, and pin asm_mighty v0.1.4 in their modules.repos. Motivation: the judged obstacle-route comparison in the asm_mighty README — DROAN 0/5 and 0/10 (absorbing hovers, near-contacts) vs MIGHTY 5/5 with 1.59–1.65 m clearances behind the same controller.
  • DROAN extracted. The six packages (droan_gl, droan_local_planner, disparity_expansion, disparity_graph, disparity_graph_cost_map, cost_map_interface) move to castacks/asm_droan (git filter-repo, 65 commits of history preserved; tagged v0.1.0; registered as the droan module). The droan_gl GL link deps leave Dockerfile.robot and become the module's tier-1 apt deps; the trunk image gains MIGHTY's nlohmann-json3-dev header dep so the default stack runs on the base image with no composed module layer (asm_mighty v0.1.4 declares no deps).
  • Stacks. New full_droan = the previous default topology (GPU DROAN) pinning asm_droan — it inherits the old full_default wiring baseline (identical graph; only the H1 stack name changed). full_droan_cpu and full_macvo pin asm_droan. full_mighty is folded into full_default.
  • airstack up reconciles stack pins. A stack's modules.repos is honoured at launch: missing pins are added + synced, differing local pins are kept and named, uncomposed dependency layers are built (module lock --build, unless AIRSTACK_NO_IMAGE_BUILD=1). --dry-run/--config-only only report; AIRSTACK_NO_STACK_MODULE_SYNC=1 opts out. Without this the module-pinned default stack would fail on first run.
  • Docs/skills/tests. Local-layer pages rewritten (planner comparison table, world-model pairing), stacks/autonomy-modes tables, walkthrough, module/stack docs, skills, mkdocs nav (5 package READMEs out, full_droan + droan in), registry fixture + regenerated catalog, release notes, VERSION → 0.21.0-dev.11. New contract tests pin the dry-run reconcile report.

Companion PRs (merge the registry one first — the docs deploy regenerates the catalog from the live registry): castacks/airstack-modules-index (droan + full_droan entries, full_mighty removed, mighty re-pinned to v0.1.4).

Validation

Check Result
pytest tests -m unit (stack layout, single-locus lint, docs catalog --check, launch-intent dry-run, CLI help, new reconcile tests) 404 passed, 11 skipped
tools/validate_module.py asm_droan / asm_mighty; registry validate_entry.py valid (9 registry entries)
mkdocs build 0 warnings
In-container colcon build (robot 0.21.0-dev.9 base + the new apt deps, trunk ws with the six packages removed + asm_droan/asm_mighty overlaid; --packages-up-to the module packages) 21 packages finished, 0 failed (51 packages discovered, none duplicated; 12 min 47 s)
airstack up --dry-run (default / full_droan_cpu) reports the pins, touches nothing

Version note

The module compat floors (>=0.21.0-dev.10) and the module READMEs were written before #423 landed on dev.10; the swap itself ships in dev.11. dev.10 is a catalog-only sync nobody targets, so the floors are left one dev release permissive rather than re-tagging asm_droan v0.1.0 / asm_mighty v0.1.4.

Not done in this PR (needs a sim session)

  • full_default (MIGHTY) and lite_default have no committed wiring.md — the stale DROAN baselines were dropped; the snapshot test passes with the bootstrap instruction until airstack test -m wiring --stack full_default --sim isaacsim --num-robots 1 is run and its observed file committed. (full_mighty shipped the same way.)
  • The 13 droan/* keepalive rows stay in topic_keepalive_node.py: removing them drifts the full_droan / full_droan_cpu / full_macvo goldens, which must be regenerated in the same change (tracked in asm_droan TRUNK_REMOVAL.md §4).
  • No end-to-end flight of the new default was flown here (GPU shared with running experiments); the MIGHTY-on-0.20.x closed-loop flights and the judged campaign are the module's evidence.

🤖 Generated with Claude Code

… module (0.21.0-dev.11)

Default stack swap: full_default, lite_default and lite_offload_global:onboard
include the MIGHTY module launch (asm_mighty v0.1.4: planner + acl-mapping
voxel world model + NavigateTask bridge) in place of droan_gl and pin it in
their modules.repos. The six DROAN packages (droan_gl, droan_local_planner,
disparity_expansion, disparity_graph, disparity_graph_cost_map,
cost_map_interface) leave trunk for castacks/asm_droan v0.1.0 (history
preserved with git filter-repo). Dockerfile.robot swaps the droan_gl GL link
deps for MIGHTY's nlohmann-json3-dev header dep, so the default stack runs on
the base image with no composed module layer.

Stacks: new full_droan = the previous default (GPU DROAN) topology pinning
asm_droan, inheriting the old full_default wiring baseline; full_droan_cpu
and full_macvo pin asm_droan; full_mighty folded into full_default.
lite_default's stale wiring baseline dropped (bootstrap path, like
full_default's new MIGHTY graph).

airstack up now reconciles the selected stack's modules.repos pins before
launch (add + sync missing pins, keep and name differing local pins,
module lock --build uncomposed layers unless AIRSTACK_NO_IMAGE_BUILD=1;
dry-run/config-only report only; AIRSTACK_NO_STACK_MODULE_SYNC=1 opts out) —
a module-pinned default stack must work out of the box. Contract tests pin
the dry-run report.

Docs: local-layer pages (planner table, world-model pairing), stacks and
autonomy-modes tables, walkthrough, module/stack guides, skills, mkdocs nav,
registry fixture + regenerated catalog (droan page, full_droan stack),
release notes.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@andrewjong andrewjong changed the title MIGHTY is the default local planner; DROAN extracted to the asm_droan module (0.21.0-dev.10) MIGHTY is the default local planner; DROAN extracted to the asm_droan module (0.21.0-dev.11) Sep 11, 2026
@andrewjong
andrewjong force-pushed the feat/mighty-default-local-planner branch from 6d56479 to 1434054 Compare September 11, 2026 03:26
@andrewjong
andrewjong merged commit a5400ed into develop Sep 11, 2026
3 of 4 checks passed
@github-actions

Copy link
Copy Markdown
Contributor

Test Metrics — d86c4752380996693e72f8b77b52a3ecaf112420

This was a unit/build-only run. Simulation regression comparison does not apply.

system.test_build_packages

Pass rates

Test Pass Fail Skip Rate
test_colcon_build_gcs 0 1 0 0%
test_colcon_build_ms_airsim 0 1 0 0%
test_colcon_build_robot 0 1 0 0%
test_colcon_test_robot 0 1 0 0%

Metrics

Test Metric Value
test_colcon_build_robot duration_s 0.82s
test_colcon_test_robot duration_s 0.63s
test_colcon_build_gcs duration_s 0.631s
test_colcon_build_ms_airsim duration_s 0.619s

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant