Skip to content

Add perception-aware lattice A* planning (transplant from mad_demo) - #34

Open
nehirgerek wants to merge 1 commit into
mit-acl:dev-rr-mad-eth-elevationfrom
nehirgerek:mad-perception-aware
Open

Add perception-aware lattice A* planning (transplant from mad_demo)#34
nehirgerek wants to merge 1 commit into
mit-acl:dev-rr-mad-eth-elevationfrom
nehirgerek:mad-perception-aware

Conversation

@nehirgerek

Copy link
Copy Markdown

Brings the perception-aware global planner onto the dev-rr-mad-eth-elevation branch. Plans a heading-lattice A* over the tristate belief (FREE/OCC/UNK) under a sensor-coverage invariant: an unknown cell may only be traversed if it was (or will be) observed from the primitive start pose or a back-projected virtual pose (Livox Mid-360 tilted-ground FOV model). Enabled per-config for ground-robot 2D planning via perception_aware_planning; otherwise a no-op.

Contents:

  • perception_planner.{hpp,cpp}: sensor models (Mid360FOV, AnnulusSensor), motion primitives, memoized Amanatides-Woo visibility, lattice A* with timeout/max-expand guards and best-node partial recovery, ladder-based coverage audit (diagnostic).
  • hgp_planner: configurePerceptionAware() + planPerceptionAware(); plan() routes through it when enabled. Fail-stop: never falls back to grid A*; rejects the replan (robot holds) when the belief is not ready or not in 2D mode. Partial paths gated on >= ~1 cell net progress; partial-ness exposed via getters and logged.
  • hgp_manager / mighty_type / mighty_node / config: plumb the enable flag and hand the planner the tristate belief + robot radius.
  • scripts/diag_grid_test.py, scripts/mid360_fov_viz.py, launch/diag_test.launch.py, rviz overlay: RViz test harness and FOV visualization.

Merge notes: transplanted onto the diverged eth-elevation line; only CMakeLists.txt conflicted (union of installed scripts). The graph_search diagonal corner-cut fix was already present on this branch.

NOTE: NOT yet compiled or run in sim on this branch. A colcon build, frontier-start sim validation, and confirmation that the Mid-360 extrinsics match the real rover are all still outstanding before any rover deployment.

Brings the perception-aware global planner onto the dev-rr-mad-eth-elevation
branch. Plans a heading-lattice A* over the tristate belief (FREE/OCC/UNK)
under a sensor-coverage invariant: an unknown cell may only be traversed if it
was (or will be) observed from the primitive start pose or a back-projected
virtual pose (Livox Mid-360 tilted-ground FOV model). Enabled per-config for
ground-robot 2D planning via perception_aware_planning; otherwise a no-op.

Contents:
- perception_planner.{hpp,cpp}: sensor models (Mid360FOV, AnnulusSensor),
  motion primitives, memoized Amanatides-Woo visibility, lattice A* with
  timeout/max-expand guards and best-node partial recovery, ladder-based
  coverage audit (diagnostic).
- hgp_planner: configurePerceptionAware() + planPerceptionAware(); plan()
  routes through it when enabled. Fail-stop: never falls back to grid A*;
  rejects the replan (robot holds) when the belief is not ready or not in 2D
  mode. Partial paths gated on >= ~1 cell net progress; partial-ness exposed
  via getters and logged.
- hgp_manager / mighty_type / mighty_node / config: plumb the enable flag and
  hand the planner the tristate belief + robot radius.
- scripts/diag_grid_test.py, scripts/mid360_fov_viz.py, launch/diag_test.launch.py,
  rviz overlay: RViz test harness and FOV visualization.

Merge notes: transplanted onto the diverged eth-elevation line; only
CMakeLists.txt conflicted (union of installed scripts). The graph_search
diagonal corner-cut fix was already present on this branch.

NOTE: NOT yet compiled or run in sim on this branch. A colcon build,
frontier-start sim validation, and confirmation that the Mid-360 extrinsics
match the real rover are all still outstanding before any rover deployment.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
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