Skip to content

[waveshare-ugv] Make supervised physical navigation fail closed - #181

Draft
superposition wants to merge 1 commit into
agent/167-map-toolsfrom
agent/168-physical-nav
Draft

superposition wants to merge 1 commit into
agent/167-map-toolsfrom
agent/168-physical-nav

Conversation

@superposition

@superposition superposition commented Jul 10, 2026

Copy link
Copy Markdown
Collaborator

Tracks #168; keep the issue open until the supervised Pinkie acceptance artifacts are attached.

Depends on #165, #166, and #167. This PR is stacked on #180.

What changed

  • add guarded HTTP goal/status/cancel routes and pass token/approval through saved patrol starts
  • retain validated simulator planner/patrol authorization across continuation steps, clearing it on stop, cancel, E-stop, deadman, collision, or failure
  • require physical pose covariance at or below 0.15 m X/Y sigma and 10 degrees yaw sigma throughout execution
  • pin the active map identity for the physical authorization lease and cancel on replacement
  • require a polygon boundary for physical saved patrols, prove every waypoint is inside it/on the same map, advance each waypoint once, and send zero speed at the terminal waypoint
  • extend dedicated zero-speed cancellation proofs for token replacement/expiry, approval loss, deadman, distance limit, provider/lidar loss, obstacle, covariance, map replacement, stop, and E-stop
  • add a loopback-only Pinkie field runner with explicit floor/spotter/E-stop confirmation, private token input, resource capture, normal Leash replay validation, hashes, and final-stop proof
  • link the concrete field workflow from the main README while keeping generic Leash vs Waveshare UGV implementation ownership explicit

Definition of done

  • Physical navigation remains behind independent compile/runtime/actuation gates.
  • Goal/path and localization providers still have no motor-device ownership; final drive calls remain Leash-owned.
  • Token, approval, low-speed cap, lidar/localization freshness, covariance, deadman, obstacle, map identity, and soft-distance checks run at start and continuation.
  • Dedicated no-hardware proofs cancel every safety path and produce zero command state.
  • Saved physical patrols require a bounded polygon and stop after exactly one pass through the saved waypoint list.
  • Failed/cancelled runs clear planner, patrol, and authorization state; restart state is not persisted.
  • Every field run is forced to capture supervised-safety assertions, telemetry/resources, replay, hashes, and final zero speed.
  • Supervised 0.5 m goal completes within 0.15 m on Pinkie.
  • Three consecutive supervised map-frame goals complete with final pose and stop evidence.
  • One explicitly bounded Pinkie patrol completes one circuit and stops at its terminal waypoint.
  • Full five-run private evidence set passes navigation/verify.py and is linked in scrubbed form.

Verification

  • cargo clippy --all-targets --all-features -- -D warnings
  • cargo test --all-targets --all-features (179 library + 4 binary tests)
  • scripts/smoke-all.sh (28/28 no-hardware checks)
  • implementations/waveshare-ugv/navigation/verify.sh
  • cargo package --allow-dirty (130 files; package verification passed)

No physical motion was performed in this PR. It stays draft until the SSH identity gate, #165 soak, #166 measured calibration, and on-site acceptance runs are complete.

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