Add Task Program support for rigidized articulations - #665
Conversation
|
| rigidized_articulations: tuple[ | ||
| SimulationRigidizedArticulationObjectBinding, ... | ||
| ] = () |
There was a problem hiding this comment.
Rigidized objects bypass policies
Rigidized articulations are declared as ordinary SceneObjectRefs, but SimulationSegmentPolicyPort does not add them to its native settle-target or object-observation maps. As a result, a valid Task Program that applies wait_stable or object_near_target to one of these objects fails with “no explicit native dynamic/rigid-object binding” instead of running the policy or validator. These bindings need to be exposed to the policy port through their native articulation handles.
Knowledge Base Used: Task program workflows
Prompt To Fix With AI
This is a comment left during a code review.
Path: embodichain/lab/task_program/integrations/simulation/bindings.py
Line: 759-761
Comment:
**Rigidized objects bypass policies**
Rigidized articulations are declared as ordinary `SceneObjectRef`s, but `SimulationSegmentPolicyPort` does not add them to its native settle-target or object-observation maps. As a result, a valid Task Program that applies `wait_stable` or `object_near_target` to one of these objects fails with “no explicit native dynamic/rigid-object binding” instead of running the policy or validator. These bindings need to be exposed to the policy port through their native articulation handles.
**Knowledge Base Used:** [Task program workflows](https://app.greptile.com/dexforce/-/custom-context/knowledge-base/dexforce/embodichain/-/docs/expert-program-workflows.md)
---
For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.…odex/pr632-task-program # Conflicts: # agent_context/topics/task-programs/configuration.md
Stack
xinyi/atomic03Description
This PR extends #632 so articulation-backed objects that are rigidized at their root can be used by configured Task Programs.
It:
SceneObjectRefand configured scene bindings;demo/RubiksCube.zipbundle for automatic asset resolution;top_turn: [0, 0]lock withasset_physics_mode: overlay;TaskProgramRubiksCubePickPlace-v1, based on the repeated pick/place task configuration;Dependencies: #632 (
xinyi/atomic03). This PR should be reviewed and merged after that PR.Current scope
Configured rigidized articulations support whole-object Pick/Place using a selected link as the grasp region. Their
collision_rolemust remainnoneuntil physical compound collision geometry can be exported to a planner. HandOver and CoordinatedPickment reject link-scoped grasp meshes because their whole-object shape analysis would otherwise use only that link.joint_position_toleranceandlink_transform_tolerancemay only tighten their safe maxima (1e-3and1e-5). Configured joint-limit coincidence uses a fixed1e-6safety epsilon and cannot be weakened by configuration.Type of change
Screenshots
Not applicable; this change adds runtime/configuration support and an executable task example.
Validation
black .python docs/scripts/check_api_docs.py: 2268/2268 public APIs documentedatomic-actionsandtask-programsguidance updated for the scope boundary and tolerance contractTaskProgramRubiksCubePickPlace-v1passed with 3 segments and 6 callsorigin/mainrevision, and this PR is again a focused 38-file upper layerNative qualification command:
Checklist
black .command to format the code base.python docs/scripts/check_api_docs.py), if applicable