Motion planning · repose-motion-planning
Motion planning
A motion planner finds a path in joint space from where the robot is to where it should be, without hitting itself or the scene. Repose has seven planners behind one trait and one Copper task, so switching planners is a config change.
The pieces
| Requests & results | CuJointPlanRequest in, CuJointPlanPath out, with an explicit CuPlanStatus. |
| The planner task | CuJointPlannerTask: the anytime base/refine loop, budgets, seeding and replay. |
| Choosing a planner | RRT-Connect, RRT*, PRM, A*, STOMP, the path optimizer and Direct: how each works and every parameter. |
| Scene validity | CuSceneValidity: the collision queries every planner shares. |
| Plan-and-execute pipeline | CuJointGoalTask and CuPlanToTrajectoryTask: from measured state to a timed trajectory without application code. |
| Write a planner | Implement CuJointPlanner and register it by name. |
Joint space, not Cartesian
Planners search over joint values. Collision checks place the whole arm at each configuration, so every link is covered, not just the tool. The output is a list of joint waypoints connected by straight joint-space lines. If you need the tool to follow a specific Cartesian line, use Cartesian blending instead.
One plan, start to finish
request (scene, exclusions, start, goal)
│
▼ begin(request, seed) capture scene snapshot, check start and goal
│ → InvalidStart / InvalidGoal / InvalidRequest, or continue
▼ step(budget) … step(budget) bounded work quanta: samples, expansions, iterations
│ Searching → Improving → Converged (or Exhausted)
▼ write_best(&mut path) best path so far + cost + status + scene revisionEvery outcome is published, including failures. A plan that can't be found arrives as a CuJointPlanPath with status Exhausted, never as silence.
Crates
repose-motion-planning: the trait, payloads, task, validity checker, goal and timing tasks, and six planners.repose-joint-rrt-star: RRT*, in its own crate.repose(umbrella):CuPlannerChoiceandCuAnyPlanner, which select any planner by RON name.