executing-held-object-motion
Execute motion for a rigid object that is already held. The skill preserves the
grasp: it does not open or close the gripper. Its input is an ordered
PoseSequence containing clearance, transit, and orientation poses.
When to use
- Stand an elongated object upright before putting it through an opening.
- Turn a tool from a table grasp into a hanging or fixture-mating orientation.
- Align a keyed object before insertion.
- Reorient an item before constrained packing or sorting.
- Reach only the approach pose of a placement plan so the held object can be re-observed (wrist re-registration) before a tight engagement.
Do not use it for an ordinary bin drop when transporting-objects can lift,
translate, descend, and release directly.
Recommended subgraphs
execute_reorientation -> reoriented
execute_approach_only -> reached
execute_reorientation runs the canonical script with
reorientation_plan = Ref("in.reorientation_plan"). Each waypoint is a
typed record {pose, mode, use_attachment?, max_attempts?, allow_start_contact?, allow_goal_contact?, contact_margin?}. It forwards the plan's world_config
and attached_object to every planned leg and never replaces a rejected
collision-aware plan with an unchecked move. Use contact_transition only for
the initial support escape (a plain Cartesian move); use planned_joint for
clear-space rotation/transit and planned_linear for an orientation-locked
straight leg. A plan-level time_scale > 1 slows execution by resampling the
joint path; every planned leg is executed with a 60-step-per-waypoint budget
so a stuck waypoint does not stall the graph. Output: final_pose: Se3Pose,
the last waypoint's end-effector pose.
execute_approach_only takes placement_plan: PoseSequence (the plan that
executing-feature-mating will finish) and executes only its first waypoint
as a collision-aware motion.plan_to_pose leg with the plan's world and
attachment, retrying the sampled planner up to three times and tracking the
trajectory to 2 mm. It raises when the planner refuses (route to blocked).
Output: approach_pose: Se3Pose, the waypoint it reached, so the graph can
re-register the held object there and recompute the engagement.
Boundaries
- Upstream geometry or perception determines the desired object orientation and sufficient clearance. This skill executes that typed request.
- The sequence must describe end-effector poses, not object poses.
- The skill never releases the object and never queries cameras, simulation state, task goals, evaluators, or reward.
- Full 3-DOF orientation changes require a robot IK backend that honors wrist roll. A position/approach-axis-only backend cannot reliably stand a syringe or long tool upright.