Release Notes¶
Feature docs deliberately describe only the system as it exists — never how it got that way — so that every page reads standalone. This page is the one place where change context lives: what changed, from what, and why.
The published site shows only the notes for the docs version you are viewing. To read another version's notes, switch versions with the selector in the header. Versioned release-notes pages exist from 0.19.0 onward; notes for older releases (0.18.0 and earlier) live on the GitHub releases page.
0.21.0 (Unreleased)¶
- New modules: RAVEN semantic planner and the geometric exploration
planner. Two global planners now ship as external modules and pinned
reference stacks: asm_raven
(RAVEN, ICRA 2026 — RayFronts open-set semantic ray-frontier map + behavior
manager in a GPU sidecar container,
raven_bridgeon the robot; stackfull_raven) and asm_exploration_planner (the frontier-based geometric exploration planner from the construction-site project, extracted from trunk'srobot/ros_ws/src/global/planners/explorationwith its bounded viewpoint sampling; stackfull_exploration). Both stacks are one<include>swap againstfull_default: the MIGHTY bridge follows the publishedglobal_plandirectly, and its LiDAR-based world model keeps working in unlit scenes where stereo disparity does not. global_plan_navigate_bridge. New trunk package that turns aglobal_plantopic intoNavigateTaskgoals (cancel-then-resend on each new plan), so global planners that only publish a path can drive a task-executor local planner such asdroan_gl(asm_droan, stacksfull_droan*); the MIGHTY bridge follows the topic itself.full_default's random walk remains its own action client.- Compose fragments may declare sidecar services with a
build:section.airstack module syncnow rewrites a module compose fragment's relativebuild.context/build.dockerfile/env_filepaths to absolute, like it already did for bind-mount sources, so a module can bring its own container (the RAVEN sidecar is the first). - Headless follow-camera video.
ISAAC_SIM_FOLLOW_CAM_TOPICpublishes the Isaac Sim follow camera as a rawsensor_msgs/Imagetopic (ISAAC_SIM_FOLLOW_CAM_RES, default 1280x720), giving headless runs and CI a third-person video feed. - asm_mighty v0.1.5: follower fixes for the default planner. The
full_default,lite_defaultandlite_offload_globalstacks pinmightyv0.1.5. Itsmighty_bridgeglobal_plan follower now arms offtakeoff_landing_planner/is_airborne(newmighty_is_airborne_topiclaunch arg) instead of an 8 m climb gate that AirStack's ~3 m TakeoffTask never reached — plans were adopted but never flown — and landing clears the follower's route memory, so a second flight in the same session flies again (the "already completed" check is keyed on the plan's pose list rather than a 2 m radius, which had dropped every later plan to a once-completed target). -
Wiring baselines for the MIGHTY stacks.
stacks/full_default/wiring.mdandstacks/lite_default/wiring.mdare committed from validated Isaac Sim snapshot runs on the 0.21.0-dev.11 robot image (MIGHTY nodesmighty/{global_mapper_ros,mighty_node,mighty_bridge,mighty_init_pose_tf}in place ofdroan/disparity_expander_node; the two stacks differ only by the global layer). That image carries MAVROS 2.15.1, which names its plugin sub-nodesinterface/mavros/mavros/<plugin>(2.14.0:interface/mavros/<plugin>), so goldens captured on older images (full_droan,full_droan_cpu,full_macvo) will report drift on freshly built images until they are regenerated. -
Module catalog synced from the registry (
sync-modules-index):full_mighty,mighty. -
MIGHTY is the default local planner; DROAN moved to the
asm_droanmodule. Thefull_defaultstack (and the lite stackslite_default/lite_offload_global) now include the MIGHTY map-based planner from themightymodule (planner + acl-mapping voxel world model + NavigateTask bridge, CPU-only, lidar-fed) in place of the GPUdroan_glnode. The judged obstacle-route comparison behind the change is in the module README: DROAN's reactive, map-free design could not clear a 1.0 m clearance gate in dense clutter (absorbing hover states, close-quarters near-contacts), MIGHTY passed 5/5 with 1.59–1.65 m clearances behind the same controller. The six DROAN packages (droan_gl,droan_local_planner,disparity_expansion,disparity_graph,disparity_graph_cost_map,cost_map_interface) left trunk for castacks/asm_droan (history preserved; registered as thedroanmodule). The previous default topology is kept as the newfull_droanreference stack (it inheritsfull_default's wiring baseline);full_droan_cpuandfull_macvopinasm_droan; the opt-infull_mightystack was folded intofull_default. Trunk's robot image swaps thedroan_glGL link deps for MIGHTY'snlohmann-json3-devheader dep, so the default stack runs with no composed module layer (asm_mighty v0.1.4, compat>=0.21.0-dev.10). -
airstack upreconciles the selected stack's module pins. A stack'smodules.reposis now honoured at launch: pinned modules missing from the checkout are added and synced, differing local pins are kept and named, and uncomposed dependency layers are built (airstack module lock --build, unlessAIRSTACK_NO_IMAGE_BUILD=1).--dry-run/--config-onlyonly report;AIRSTACK_NO_STACK_MODULE_SYNC=1opts out. Previously a module-pinned stack required a manualairstack module addfirst — which the module-pinned default stack would have made a first-run failure. -
Fixed: post-release main→develop sync no longer skips. The
sync-develop-from-mainworkflow skipped whenever the merge result was content-identical todevelop— exactly the situation right after a release — so it never pushed the ancestry-advancing merge commit or rolleddevelop's VERSION forward. It now skips only whenmainis already an ancestor ofdevelop.