feat(cam-viz): orientation ribbon + hexapod dump #130

Merged
patman merged 4 commits from patman/viz-ribbon into patman/stewart-e2e 2026-08-24 02:25:39 +00:00 AGit
Owner

SE(3) extension S-g (design section 7 optional step). ribbon.rs: commanded-orientation ribbon geometry, yaw recovered from the rotation matrix (structurally immune to quaternion double cover). hexapod.rs + hexapod-dump binary (BUCK+Cargo): tangent-aligned pass through all three Stewart IK orders, per-leg CSV. Showcase scenes untouched — pinned renders cannot shift. Try: buck2 run //CAM/viz:hexapod-dump. Opus review PASS.

SE(3) extension S-g (design section 7 optional step). ribbon.rs: commanded-orientation ribbon geometry, yaw recovered from the rotation matrix (structurally immune to quaternion double cover). hexapod.rs + hexapod-dump binary (BUCK+Cargo): tangent-aligned pass through all three Stewart IK orders, per-leg CSV. Showcase scenes untouched — pinned renders cannot shift. Try: buck2 run //CAM/viz:hexapod-dump. Opus review PASS.
feat(cam-viz): orientation ribbon + hexapod actuator-stream dump
Some checks failed
CI / build-test (pull_request) Failing after 4s
939ea850e5
Stack step S-g of the SE(3) angular lowering design
(docs/superpowers/se3-lowering-design.md sections 5 and 7). Optional and
non-gating: presentation only. No lowering behaviour changes, no
certificate changes, and the showcase scenes do not call any of it, so
their pinned renders are untouched.

- src/ribbon.rs: samples the commanded tool orientation along a lowered
  pass and turns it into drawable geometry. A trajectory polyline shows
  where the tool goes but not how it is turned while going there; the
  ribbon draws a band whose half-width follows the tool's body +y, with
  periodic rungs, so the yaw swing through a corner blend is legible.
  Yaw is recovered from the pose's rotation matrix rather than from the
  quaternion components, which is correct for any rotation and sidesteps
  the double cover.
- src/hexapod.rs + src/bin/hexapod_dump.rs: a new rust_binary that pushes
  a tangent-aligned rounded-rect pass through the Stewart platform's three
  higher-order IK orders and emits per-leg length/rate/acceleration/jerk
  as CSV, with a summary header carrying the numbers a PR description
  wants. This is the reporting counterpart to cam-lower's stewart_e2e
  demo, which asserts the same chain's correctness.

BUCK and Cargo are both updated for the new binary (hexapod-dump), per
the dual-bookkeeping rule -- this one is not test-only.

Sample output from `buck2 run //CAM/viz:hexapod-dump`, MEASURED AT THIS
COMMIT:
  path_len_mm=631.3265 duration_s=12.789031 segments=25579 dt_s=0.0005
  peak_omega_rad_s=1.326477 peak_alpha_rad_s2=22.164002
  peak_zeta_rad_s3=717.237934
  cert_position_m=0.000583663 cert_orientation_rad=0.055577394
  cert_orientation_informative=true
  leg_extension_m=[0.411379,0.989294] peak_leg_jerk_m_s3=167.410471

NOTE for anyone running the binary from a later commit: the two
certificate-tightening commits stacked above this one (S-h feed-side
windowing, S-i seam-endpoint kappa'') lower the orientation bound, so at
the stack tip the same binary prints cert_orientation_rad=0.036141360
rather than 0.055577394. Nothing is wrong -- the bound got tighter. Every
other number above is unchanged, since neither lever touches the emitted
schedule or the translational certificate.

Tests: ribbon sampling count/span, yaw tracking the direction of travel
checked against the twist rather than the pose it was drawn from, a
fixed-vs-tangent-aligned contrast as the mutation guard, edge offsets, a
canvas-marking check, and for the dump its CSV shape, byte-level
determinism (no clock, no randomness), non-degenerate streams, and that
the fixture is gentle enough to certify informatively.

Co-authored-by: patman-assist <patrick-ai@kgroo.co>
chore: normalize comments
Some checks failed
CI / build-test (pull_request) Failing after 6s
ee2072aa8e
Co-authored-by: patman-assist <patrick-ai@kgroo.co>
style: rustfmt --edition 2024 drift fix
Some checks are pending
CI / build-test (pull_request) Waiting to run
6aa24d5260
Reformats files that predate the runner's current rustfmt; no code changes.

Co-authored-by: patman-assist <patrick-ai@kgroo.co>
merge: sync main into viz-ribbon (post track2 merge)
All checks were successful
CI / build-test (pull_request) Successful in 8m56s
802fb4d46d
Co-authored-by: patman-assist <patrick-ai@kgroo.co>
patman merged commit d63c4989ae into patman/stewart-e2e 2026-08-24 02:25:39 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
patman/KGROO!130
No description provided.