You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 133aa2a
Browse filesBrowse the repository at this point in the historyBrowse files
* feat(modules): RAVEN + geometric exploration planners as modules; global_plan→NavigateTask bridge
Two global planners now ship as external modules with pinned reference stacks:
- stacks/full_exploration — asm_exploration_planner (frontier-based geometric
exploration planner from the construction-site project). The trunk package
robot/ros_ws/src/global/planners/exploration moves to that module repo with
its history (git filter-repo) plus the bounded-exploration additions from
junbin/planning_demo; removed here so the same colcon package never exists
in trunk and the module overlay at once.
- stacks/full_raven — asm_raven (RAVEN, ICRA 2026): the RayFronts semantic
ray-frontier mapper + behavior manager run as a GPU sidecar container declared
by the module's compose fragment; raven_bridge relays plans/prompts on the
robot side.
Trunk support these needed:
- robot/ros_ws/src/global/global_plan_navigate_bridge: turns each new Path on
global_plan into a NavigateTask goal (cancel-then-resend, identical
re-publications deduped) so topic-publishing planners can drive the
task-executor local planner droan_gl. Hermetic unit tests registered in
tests/colcon_unit_test_packages.yaml.
- tools/module_overlay.py: compose fragments may now declare sidecar services
with build: sections — build.context / build.dockerfile / env_file relative
paths are absolutized like bind sources (+ contract tests).
- Isaac follow camera: ISAAC_SIM_FOLLOW_CAM_TOPIC / ISAAC_SIM_FOLLOW_CAM_RES
publish the chase camera as a sensor_msgs/Image topic for headless video
capture (scene_prep.add_camera_image_publisher).
- Docs: stack tables, autonomy modes, global planning page, environment
variables, modules.md (sidecars), docs/modules catalog regenerated from the
fixture index (raven, exploration_planner, full_raven, full_exploration),
mkdocs nav, release notes. VERSION 0.21.0-dev.8 -> 0.21.0-dev.9.
Module repos: castacks/asm_raven, castacks/asm_exploration_planner (v0.1.0
pins are placeholders until tagged). Registry: airstack-modules-index PR #2.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
* docs(modules): document sidecar-container modules (compose fragment with build:) in modules.md and the create-module skill
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
* fix(isaac): single-drone launch script honors ISAAC_SIM_SPAWN_XY
example_one_px4_pegasus_launch_script.py hardcoded the spawn at the world
origin; only the multi-drone script read ISAAC_SIM_SPAWN_XY. Several imported
stages (construction-site, retro-neighborhood) are enclosed at the origin, so
--scene runs with one robot could not move the drone off it.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
* stacks(full_exploration, full_raven): rebase on full_mighty
Both new stacks now take their local layer from full_mighty (asm_mighty
v0.1.1 pinned alongside the planner module): MIGHTY's bridge follows the
published global_plan directly, so the Path->NavigateTask adapter is not
needed there (global_plan_navigate_bridge stays in trunk for droan_gl-based
stacks), and MIGHTY plans on the Ouster LiDAR, which keeps navigation working
in unlit imported stages where the stereo disparity droan_gl consumes is
unavailable. Docs tables, release notes, registry fixture entries and the
generated catalog updated; both READMEs flag asm_mighty's known
fixed-yaw-at-goal bug (fix being upstreamed separately).
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
* stacks(full_exploration, full_raven): pin asm_mighty v0.1.2 (arrival-yaw fix upstreamed)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
* Merge develop (asm_mighty v0.1.3); VERSION 0.21.0-dev.10; pin v0.1.3 in full_exploration/full_raven
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
* stacks(full_exploration, full_raven): open MIGHTY's global_plan follower gate for 3 m takeoffs
mighty_bridge engages its global_plan follower only after climbing
follow_min_climb_m (module default 8 m); TakeoffTask climbs to ~3 m, so the
published plans were adopted but never flown. A scoped set_parameter around
the MIGHTY include lowers follow_min_climb_m / follow_airborne_above_m to
1.5 m without editing the module.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
---------
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: docs/development/stacks.md
+4Lines changed: 4 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -30,6 +30,8 @@ Anatomy is enforced by a unit test: `tests/meta/test_stack_layout_contract.py`
30
30
|[`full_default`](https://github.com/castacks/AirStack/tree/develop/stacks/full_default)| The full-autonomy topology with the MIGHTY map-based local planner (`asm_mighty` module: planner + acl-mapping voxel world model + NavigateTask bridge) — the baseline, and what launches when no stack is selected. |
31
31
|[`full_droan`](https://github.com/castacks/AirStack/tree/develop/stacks/full_droan)| The GPU DROAN reactive planner (`droan_gl`, `asm_droan` module) in place of MIGHTY — for depth-camera-only vehicles and legacy comparisons. |
32
32
|[`full_droan_cpu`](https://github.com/castacks/AirStack/tree/develop/stacks/full_droan_cpu)| CPU DROAN planner + live `disparity_expansion` (`asm_droan` module) for machines without a GPU planner. |
33
+
|[`full_exploration`](https://github.com/castacks/AirStack/tree/develop/stacks/full_exploration)|`full_default` with the frontier-based geometric exploration planner in place of the random walk. Requires the `asm_exploration_planner` module (pinned in the stack's `modules.repos` alongside `asm_mighty`). |
34
+
|[`full_raven`](https://github.com/castacks/AirStack/tree/develop/stacks/full_raven)|`full_default` with RAVEN open-set semantic navigation as the global planner: RayFronts GPU sidecar container + `raven_bridge`. Requires the `asm_raven` module (pinned alongside `asm_mighty`). |
33
35
|[`full_macvo`](https://github.com/castacks/AirStack/tree/develop/stacks/full_macvo)| MAC-VO as the DROAN planner's disparity source. Requires the `asm_macvo` and `asm_droan` modules. |
34
36
|[`lite_default`](https://github.com/castacks/AirStack/tree/develop/stacks/lite_default)| Onboard-lite topology, unsplit: interface, sensors, perception, flat Local layer, behavior; **no global, no logging**. |
35
37
|[`lite_offload_global`](https://github.com/castacks/AirStack/tree/develop/stacks/lite_offload_global)| A **split stack**: `onboard.launch.xml` (= lite topology) + `offboard.launch.xml` (global layer only) + `bridge.yaml`. |
@@ -296,6 +298,8 @@ ignored. Select the topology with `--stack`:
296
298
| The full-autonomy baseline | Nothing — `full_default` launches by default (or be explicit: `--stack full_default`) |
| CPU DROAN topology |`--stack full_droan_cpu` (`asm_droan` module) |
301
+
| Frontier exploration global planner |`--stack full_exploration` (requires the `asm_exploration_planner` module) |
302
+
| RAVEN semantic (language-prompted) global planner |`--stack full_raven` (requires the `asm_raven` module; first run builds the sidecar image; Isaac Sim with GUI) |
(the docs deploy workflows regenerate it against the live registry at build time) -->
6
+
7
+
> Frontier-based geometric exploration global planner — OpenVDB occupancy map, frontier clustering, bounded viewpoint sampling and an RRT path to the chosen viewpoint, published as global_plan; developed for the CMU AirLab construction-site project
> Extracted from trunk (robot/ros_ws/src/global/planners/exploration, history preserved) together with the bounded-exploration additions from the construction-site demo branch. Publishes a path on global_plan and serves the behavior/global_plan_toggle service; the MIGHTY bridge (full_exploration) follows the published plan directly, while droan_gl-based stacks add the trunk global_plan_navigate_bridge. Consumed by trunk reference stack full_exploration.
|[dfm2_disturbances](dfm2_disturbances.md)| Isaac Sim disturbance library (fan/vent force fields, strobe lights, lens flare) |`isaac_extension`|ajong@andrew.cmu.edu|`>=0.19.0-alpha.18 <0.20.0`|[repo](https://github.com/castacks/asm_dfm2_disturbances)|
22
22
|[droan](droan.md)| DROAN disparity-space local obstacle avoidance — the GPU (OpenGL) droan_gl planner and the CPU droan_local_planner with its disparity_expansion / disparity_graph / disparity_graph_cost_map world model, serving AirStack's NavigateTask / trajectory_controller seam from a stereo disparity image |`ros_package`|ajong@andrew.cmu.edu|`>=0.21.0-dev.10 <0.22.0`|[repo](https://github.com/castacks/asm_droan) · [full_droan](../../stacks/full_droan/README.md) · [full_droan_cpu](../../stacks/full_droan_cpu/README.md) · [full_macvo](../../stacks/full_macvo/README.md)|
23
+
|[exploration_planner](exploration_planner.md)| Frontier-based geometric exploration global planner — OpenVDB occupancy map, frontier clustering, bounded viewpoint sampling and an RRT path to the chosen viewpoint, published as global_plan; developed for the CMU AirLab construction-site project |`ros_package`|ajong@andrew.cmu.edu|`>=0.21.0-dev.8 <0.22.0`|[repo](https://github.com/castacks/asm_exploration_planner) · [full_exploration](../../stacks/full_exploration/README.md)|
23
24
|[macvo](macvo.md)| MAC-VO learned stereo visual odometry (ICRA 2025 best paper) — macvo_ros2 wrapper around the MAC-VO network, publishing odometry, a covariance-aware point cloud, and the disparity image the local planner can consume |`ros_package`|ajong@andrew.cmu.edu|`>=0.19.0-alpha.18 <0.20.0`|[repo](https://github.com/castacks/asm_macvo) · [full_macvo](../../stacks/full_macvo/README.md)|
24
-
|[mighty](mighty.md)| MIGHTY Hermite-spline local planner (MIT ACL, RA-L 2026) with its acl-mapping voxel world model and a bridge to AirStack's NavigateTask / trajectory_controller seam — AirStack's default local planner (the map-based replacement for DROAN) |`ros_package`|ajong@andrew.cmu.edu|`>=0.21.0-dev.10 <0.22.0`|[repo](https://github.com/castacks/asm_mighty) · [full_default](../../stacks/full_default/README.md)|
25
+
|[mighty](mighty.md)| MIGHTY Hermite-spline local planner (MIT ACL, RA-L 2026) with its acl-mapping voxel world model and a bridge to AirStack's NavigateTask / trajectory_controller seam — AirStack's default local planner (the map-based replacement for DROAN) |`ros_package`|ajong@andrew.cmu.edu|`>=0.21.0-dev.10 <0.22.0`|[repo](https://github.com/castacks/asm_mighty) · [full_default](../../stacks/full_default/README.md)· [full_exploration](../../stacks/full_exploration/README.md) · [full_raven](../../stacks/full_raven/README.md)|
25
26
|[optitrack](optitrack.md)| OptiTrack NatNet mocap integration — natnet_ros2 client + PX4 external-vision fusion bridges on the robot, and the Motive-compatible NatNet server emulator for Isaac Sim |`ros_package`|ajong@andrew.cmu.edu|`>=0.19.0-alpha.18 <0.20.0`|[repo](https://github.com/castacks/asm_optitrack)|
27
+
|[raven](raven.md)| RAVEN semantic aerial navigation (ICRA 2026) — the RayFronts open-set semantic ray-frontier map and behavior manager (voxel, ray, LVLM and frontier search) in a GPU sidecar container publishing global_plan toward a natural-language target, plus the raven_bridge plan/prompt relay on the robot |`ros_package`|ajong@andrew.cmu.edu|`>=0.21.0-dev.8 <0.22.0`|[repo](https://github.com/castacks/asm_raven) · [full_raven](../../stacks/full_raven/README.md)|
26
28
27
29
## Registered stacks
28
30
@@ -37,7 +39,9 @@ The stacks below are the ones REGISTERED in the index; the site nav's
37
39
|[full_default](../../stacks/full_default/README.md)| The full-autonomy topology as a self-contained stack folder, with the MIGHTY map-based local planner (asm_mighty module: planner + acl-mapping voxel world model + NavigateTask bridge) — the baseline most users start from, the default when no stack is selected, and the stack other stacks are copied from |`>=0.21.0-dev.10 <0.22.0`|[wiring.md](../../stacks/full_default/wiring.md)|[full_default.yaml](https://github.com/castacks/airstack-modules-index/blob/main/stacks/full_default.yaml)|
38
40
|[full_droan](../../stacks/full_droan/README.md)| Full autonomy with the GPU DROAN reactive local planner (droan_gl, asm_droan module) in place of the default MIGHTY planner — the 0.20.x full_default topology kept as a named stack for depth-camera-only vehicles and legacy comparisons |`>=0.21.0-dev.10 <0.22.0`|[wiring.md](../../stacks/full_droan/wiring.md)|[full_droan.yaml](https://github.com/castacks/airstack-modules-index/blob/main/stacks/full_droan.yaml)|
39
41
|[full_droan_cpu](../../stacks/full_droan_cpu/README.md)| Full autonomy with the CPU DROAN local planner (droan_local_planner + live disparity_expansion world model, asm_droan module) in place of the default MIGHTY planner |`>=0.21.0-dev.10 <0.22.0`|[wiring.md](../../stacks/full_droan_cpu/wiring.md)|[full_droan_cpu.yaml](https://github.com/castacks/airstack-modules-index/blob/main/stacks/full_droan_cpu.yaml)|
42
+
|[full_exploration](../../stacks/full_exploration/README.md)| Full autonomy (full_default topology: MIGHTY LiDAR-based local planner) with the frontier-based geometric exploration planner (exploration_planner module) in place of the random walk; everything else is identical to full_default |`>=0.21.0-dev.8 <0.22.0`|*not committed yet*|[full_exploration.yaml](https://github.com/castacks/airstack-modules-index/blob/main/stacks/full_exploration.yaml)|
40
43
|[full_macvo](../../stacks/full_macvo/README.md)| Full autonomy with MAC-VO learned stereo visual odometry as the disparity source for the DROAN local planner (droan_gl, asm_droan module, consumes /$ROBOT_NAME/perception/macvo/disparity) |`>=0.21.0-dev.10 <0.22.0`|[wiring.md](../../stacks/full_macvo/wiring.md)|[full_macvo.yaml](https://github.com/castacks/airstack-modules-index/blob/main/stacks/full_macvo.yaml)|
44
+
|[full_raven](../../stacks/full_raven/README.md)| Full autonomy (full_default topology: MIGHTY LiDAR-based local planner) with RAVEN open-set semantic navigation as the global planner (RayFronts GPU sidecar container + raven_bridge); everything else is identical to full_default |`>=0.21.0-dev.8 <0.22.0`|*not committed yet*|[full_raven.yaml](https://github.com/castacks/airstack-modules-index/blob/main/stacks/full_raven.yaml)|
(the docs deploy workflows regenerate it against the live registry at build time) -->
6
+
7
+
> RAVEN semantic aerial navigation (ICRA 2026) — the RayFronts open-set semantic ray-frontier map and behavior manager (voxel, ray, LVLM and frontier search) in a GPU sidecar container publishing global_plan toward a natural-language target, plus the raven_bridge plan/prompt relay on the robot
([compat/raven.yaml](https://github.com/castacks/airstack-modules-index/blob/main/compat/raven.yaml) once stamped).
40
+
A compatibility claim that isn't CI-verified rots: trust the
41
+
matrix, read the declaration as intent.
42
+
43
+
## Documentation
44
+
45
+
-[Module README on GitHub @ `v0.1.1`](https://github.com/castacks/asm_raven/blob/v0.1.1/README.md)
46
+
-*The module repo was not fetched when this page was generated — the*
47
+
*links above go to GitHub at the registered ref (failure isolation:*
48
+
*an unreachable module repo never fails the docs deploy).*
49
+
50
+
## Registered stacks using this module
51
+
52
+
-[full_raven](../../stacks/full_raven/README.md)
53
+
54
+
## Registry notes
55
+
56
+
> Wrapper (raven_bridge, sidecar Dockerfile, compose fragment, test_stack) is BSD-3-Clause-Clear; the vendored RayFronts fork (seungchan-kim/RayFronts, branch raven) keeps its own license — see the module's VENDORED.md. The sidecar is declared through the manifest's compose fragment (first module to bring its own container) and is built on first `airstack up` (~20 GB image). Consumed by trunk reference stack full_raven.
0 commit comments