YAM Motion Planner
cuRobo is sensitive to the real start state. A no-motion/pre-motion plan can
pass, then a real run can fail because physical execution replans from the
actual EEF pose, joint state, gripper load, or a slightly different scene pose.
When cuRobo fails:
- Inspect the current scene, robot state, failed target pose, and failed stage.
- Decide whether the target is physically unreasonable or just planner-sensitive.
- If the motion is feasible, do not treat one IK/path failure as final.
- Try nearby target offsets and extra waypoints that make the same task easier:
retreat lanes, lift-before-shift, shift-before-approach, lower/higher
staging poses, or less extreme rack/bin/place coordinates.
- Preview from the current robot state, not only from an ideal scripted state.
- Prefer waypoint sets that pass perturbation sweeps, not just one clean pass.
Robustness sweep pattern:
- Perturb candidate waypoints and final targets by small XYZ/RPY offsets that
represent likely real-world variance.
- Include start-state sensitivity when possible: preview from the current arm
posture, or rerun previews after moving to the actual preceding waypoint.
- Record pass/fail rate, first failed stage, pose, and planner error in
logs/<run>/plans/.
- Pick the candidate with high pass rate, clear margins from obstacles, and
simple task semantics.
Useful sweep examples:
legacy_codes/kitkat_trash_waypoint_robustness_sweep.py
legacy_codes/kitkat_handover_clearance_waypoint_sweep.py
legacy_codes/bottle_rack_waypoint_robustness_sweep.py
legacy_codes/bottle_fixed_pour_waypoint_robustness_sweep.py
Typical useful perturbations:
- placement/drop targets:
x,y,z +/- 2-5 cm
- staging/retreat waypoints:
x,y,z +/- 3-8 cm
- orientation: yaw/roll/pitch variants near the intended gripper axis
- approach order: split compound moves into one-axis waypoints
If a real run stops after a cuRobo failure while holding an object, first reason
from the current scene. If the object is still safely held, plan a held-object
recovery from the current EEF pose: preview nearby rack/bin/table targets, add
intermediate waypoints, release, retreat, then home/open. Ask the human to reset
only if the scene is physically broken or unsafe for the robot to fix.
1---2name: yam-motion-planner3description: Use for YAM cuRobo planning/IK failures, no-motion vs real-robot planning mismatch, waypoint robustness sweeps, perturbation testing, and recovery after motion planner failures.4---56# YAM Motion Planner78cuRobo is sensitive to the real start state. A no-motion/pre-motion plan can9pass, then a real run can fail because physical execution replans from the10actual EEF pose, joint state, gripper load, or a slightly different scene pose.1112When cuRobo fails:13141. Inspect the current scene, robot state, failed target pose, and failed stage.152. Decide whether the target is physically unreasonable or just planner-sensitive.163. If the motion is feasible, do not treat one IK/path failure as final.174. Try nearby target offsets and extra waypoints that make the same task easier:18 retreat lanes, lift-before-shift, shift-before-approach, lower/higher19 staging poses, or less extreme rack/bin/place coordinates.205. Preview from the current robot state, not only from an ideal scripted state.216. Prefer waypoint sets that pass perturbation sweeps, not just one clean pass.2223Robustness sweep pattern:2425- Perturb candidate waypoints and final targets by small XYZ/RPY offsets that26 represent likely real-world variance.27- Include start-state sensitivity when possible: preview from the current arm28 posture, or rerun previews after moving to the actual preceding waypoint.29- Record pass/fail rate, first failed stage, pose, and planner error in30 `logs/<run>/plans/`.31- Pick the candidate with high pass rate, clear margins from obstacles, and32 simple task semantics.3334Useful sweep examples:3536- `legacy_codes/kitkat_trash_waypoint_robustness_sweep.py`37- `legacy_codes/kitkat_handover_clearance_waypoint_sweep.py`38- `legacy_codes/bottle_rack_waypoint_robustness_sweep.py`39- `legacy_codes/bottle_fixed_pour_waypoint_robustness_sweep.py`4041Typical useful perturbations:4243- placement/drop targets: `x,y,z +/- 2-5 cm`44- staging/retreat waypoints: `x,y,z +/- 3-8 cm`45- orientation: yaw/roll/pitch variants near the intended gripper axis46- approach order: split compound moves into one-axis waypoints4748If a real run stops after a cuRobo failure while holding an object, first reason49from the current scene. If the object is still safely held, plan a held-object50recovery from the current EEF pose: preview nearby rack/bin/table targets, add51intermediate waypoints, release, retreat, then home/open. Ask the human to reset52only if the scene is physically broken or unsafe for the robot to fix.