Getting started
Overview
Repose is a manipulation stack for robot arms, built as components for the Copper runtime. If you know MoveIt, the pieces will look familiar: kinematics, collision checking, motion planning, trajectory timing and control. The difference is how they run.
How it differs
- Fixed sizes. The joint count and every capacity are compile-time constants, so a 6-axis arm is a
CuKinematicChain<6>. Nothing allocates on the hot path. - Deterministic. Sampling planners take their randomness from a seeded
CuRng, and Copper logs every message, so a run can be replayed exactly. - Configured, not coded. An application is a task graph in RON. You name library tasks directly, such as
cu_joint_rrt_star::CuJointRrtStarTask<6>, rather than wrapping them. no_stdcapable. The runtime crates build without the standard library. URDF/SRDF import needsstdand runs once at startup.
The pipeline
A typical plan-and-execute graph connects these tasks:
joint_state ─► goal ─► planner ─► timing ─► follower ─► controller ─► joint_command
goal | Turns the current state and a configured goal into a plan request. |
planner | An anytime planner (RRT*, RRT-Connect, PRM, A*, STOMP…) that keeps improving its path within a time budget. |
timing | Times the path into a trajectory within joint velocity and acceleration limits. |
follower | Samples the trajectory on the message clock. |
controller | Rate-limits commands and watches tracking error and state age. |
Before you start
You should be comfortable with Rust and know the basics of Copper tasks and RON configuration. Repose is pre-1.0: the API can still change, and nothing is on crates.io yet.