Skip to content

Add ignore_theta to OrientationConstraint - #906

Merged
Nicolas Palpacuer (NickPPC) merged 2 commits into
mainfrom
orientation-constraint-ignore-theta
Sep 24, 2026
Merged

Nicolas Palpacuer (NickPPC) merged 2 commits into
mainfrom
orientation-constraint-ignore-theta

Conversation

@NickPPC

Copy link
Copy Markdown
Member

Summary

Add an optional ignore_theta to OrientationConstraint, scoring orientation deviation between orientation vectors alone. Payloads symmetric about their pointing axis — a cup, glass or bucket — spill when tipped, not when spun. Constraining that rotation makes the planner hold a wrist angle that cannot matter.

⚠️ Paired with viamrobotics/rdk#6511: that PR carries the implementation and cannot reach users over gRPC until this field exists. The field is optional and defaults to false, so existing constraints keep measuring the full orientation.

Testing

  • buf lint, buf build, and buf breaking --against origin/main all clean
  • Only the .proto is committed — generated interfaces come from CI per the README, so this needs the ready-for-protos label before it can merge
Claude Code prompts used
  • "Let's keep the name as is.\n\nCan you start a new worktree in @~/code/api and make a PR adding the necessary proto fields? Then update the current PR's decription including a link to the PR in the api repo"

🤖 Generated with Claude Code

An orientation constraint currently pins rotation about the component's
own pointing axis along with the axis direction. Payloads that are
symmetric about that axis - a cup, glass or bucket - spill when tipped,
not when spun, so that part of the tolerance constrains a rotation which
cannot matter, and the planner is forced to hold a wrist angle for no
reason.

Add an optional ignore_theta flag that scores deviation between
orientation vectors alone. It defaults to false, so existing constraints
keep measuring the full orientation.

The RDK-side implementation is in viamrobotics/rdk#6511, which cannot
reach users over gRPC until this field exists.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@NickPPC Nicolas Palpacuer (NickPPC) added the ready-for-protos add this when you want protos to compile on every commit label Sep 23, 2026
@github-actions github-actions Bot added the safe to test committer is a member of this org label Sep 23, 2026
@NickPPC Nicolas Palpacuer (NickPPC) added ready-for-protos add this when you want protos to compile on every commit and removed ready-for-protos add this when you want protos to compile on every commit labels Sep 23, 2026
@NickPPC
Nicolas Palpacuer (NickPPC) merged commit d87a2ad into main Sep 24, 2026
3 checks passed
@NickPPC
Nicolas Palpacuer (NickPPC) deleted the orientation-constraint-ignore-theta branch September 24, 2026 14:12
Nicolas Palpacuer (NickPPC) added a commit to viamrobotics/rdk that referenced this pull request Sep 24, 2026
viamrobotics/api#906 added ignore_theta to motionpb.OrientationConstraint
and shipped it in v0.1.585, so the flag can now cross gRPC. Bump the
dependency and map it in both directions, which makes the feature
reachable from the motion service rather than only from in-process
callers and the JSON plan-request path.

Drop the two notes saying the round trip loses the flag; they are no
longer true.

The existing constructor test only ever round-trips the zero value, which
would pass even if the conversion dropped the field, so add one covering
both states plus a message from a peer that predates the field - an unset
value must read as the theta-aware default. Verified it fails when either
direction of the mapping is removed.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

protos-compiled safe to test committer is a member of this org

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants