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 & resultsCuJointPlanRequest in, CuJointPlanPath out, with an explicit CuPlanStatus.
The planner taskCuJointPlannerTask: the anytime base/refine loop, budgets, seeding and replay.
Choosing a plannerRRT-Connect, RRT*, PRM, A*, STOMP, the path optimizer and Direct: how each works and every parameter.
Scene validityCuSceneValidity: the collision queries every planner shares.
Plan-and-execute pipelineCuJointGoalTask and CuPlanToTrajectoryTask: from measured state to a timed trajectory without application code.
Write a plannerImplement 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

text
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 revision

Every 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): CuPlannerChoice and CuAnyPlanner, which select any planner by RON name.

API reference