Repository navigation
Update pose cloud docs: tolerances use the goal pose's frame - #5416
Conversation
rdk#6633 (in RDK v1.12.0) makes a pose cloud's Theta bound only the twist about the goal's Z axis. Re-reading PoseInCloud for that change shows every leeway is measured in the goal pose's own frame (PoseBetween(goal, candidate)), not the goal's parent frame, and OZ is checked as 1 - OZ. Fix the frame section, the OX/OY/OZ explanation, and the cup example, whose leeways did not allow what its comments said.
✅ Deploy Preview for viam-docs ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
Docs review: Ready to mergeThis PR corrects CI: All required checks passing (non-required "Check Markdown files" still running at review time) Docs health: No regressions (the code-fence change resets the page's age clock, as expected) FYI, not blocking: the author's open question for Motion Planning is whether the current leeways should be able to express a cloud that allows a full swing about vertical plus a small tilt. That's a question about rdk's design, not about these docs: the page now describes current behavior correctly either way. Verified against source (9 claims)
Automated review by Claude. Rerunning the review updates this comment. |
… alt text With the approach swung away from the goal, PoseInCloud's twist term (2 atan2(qz, qw)) is nonzero for any tilt, so Theta 0 rejects tilt there as well. Say so instead of promising about 3 degrees of tilt, and call the frame in the alt text the goal frame.
|
Thanks for checking the axis mapping. In 36444ca (pushing now):
I didn't add a small Generated by Claude Code |
|
🔎💬 Inkeep AI search and chat service is syncing content for source 'Viam Docs' |

The pose clouds page says tolerances are measured in the target's (parent) frame, but
PoseInCloudmeasures every leeway in the goal pose's own frame. The cup example's leeways therefore didn't allow what its comments said. This corrects the frame explanation, theOZsemantics, and the example.Source changes
Thetanow bounds only the twist about the goal's Z axis, so tilting the pointing direction uses none of it. No ticket key on the PR or commit.Re-reading
referenceframe/pose_cloud.goat v1.12.0 for that change:PoseInCloudcomputesPoseBetween(goalPose, candidatePose)(the candidate expressed in the goal pose's frame) and checks|X|,|Y|,|Z|,|OX|,|OY|, and|1 - OZ|there. The goal pose includes its orientation (planner_options.gopassesgoal.Pose()), so the axes follow the goal orientation, not the parent frame.Docs changes
docs/motion-planning/move-an-arm/pose-clouds.md:X,Y,Zare along the goal pose's axes;Thetais the twist about the orientation axis.OZis checked as1 - OZ, so1allows any direction within 90 degrees and2any direction. The page said1accepts any value for every component.Theta-as-twist behavior from rdk#6633, and when the inclined-surface example works (tool pointing along the surface normal).OX: 1, OZ: 0, Theta: 180, the goal frame's X axis is the table's +Z, Y is the table's -Y, and Z is the table's +X. The old cloud (X: 75, Y: 75, Z: 0, OX: 1, OY: 1, OZ: 0.1) gave 75 mm of vertical slack, held the position along the table's X, allowed up to about 26 degrees of tilt (tipping the cup), and capped the swing about vertical at about 26 degrees. The new cloud (X: 0, Y: 75, Z: 75, OX: 0.05, OY: 1, OZ: 2) gives what the comments describe: slack across the table, the cup on the surface, under 3 degrees of tilt, and an approach from any side.Reviewer note: the axis mapping comes from
OrientationVector.Quaternion()(ZYZ:Rz(lon) Ry(lat) Rz(theta), hereRy(90°) Rz(180°)), worked by hand. An engineering check from the motion team would be welcome.How I found these
rdk-posecloud-theta-twistflagged the cup example for re-checking at release; RDK v1.12.0 shipped 2026-10-13.PoseCloud,pose cloud,goal_cloud,Thetaindocs/motion-planning/: only this page states the leeway frame.Generated by daily docs change agent
Generated by Claude Code