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_std capable. The runtime crates build without the standard library. URDF/SRDF import needs std and runs once at startup.

The pipeline

A typical plan-and-execute graph connects these tasks:

joint_state ─► goal ─► planner ─► timing ─► follower ─► controller ─► joint_command
goalTurns the current state and a configured goal into a plan request.
plannerAn anytime planner (RRT*, RRT-Connect, PRM, A*, STOMP…) that keeps improving its path within a time budget.
timingTimes the path into a trajectory within joint velocity and acceleration limits.
followerSamples the trajectory on the message clock.
controllerRate-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.