Skip to content

Conversation

@cvolkcvolk
Copy link
Collaborator

Summary

Introduce the AtPosition relation, a unary constraint that pins objects to specific world coordinates. When composing object placement constraints, the existing On relation controls z-positioning (placing on a surface) and constrains x/y to stay within the parent's bounds. However, there was no way to specify an exact x/y position on that surface.

tomato_soup_can.add_relation(On(kitchen_counter, clearance_m=0.02))  # z from On
tomato_soup_can.add_relation(AtPosition(x=3.8, y=-0.32))  # exact x/y

AtPosition can be used along arbitary axes. If not specified as z in the example above, its just omitted in the loss calculation.

Copy link
Collaborator

@alexmillane alexmillane left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks great! Thanks for adding that!

@cvolkcvolk cvolkcvolk enabled auto-merge (squash) January 28, 2026 10:06
@cvolkcvolk cvolkcvolk added this pull request to the merge queue Jan 28, 2026
Merged via the queue into main with commit 76e6cee Jan 28, 2026
8 of 10 checks passed
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.

4 participants