Trajectory · repose-trajectory
Trajectory
A planned path says where the arm goes. A trajectory adds when: positions and velocities as a function of time, within every joint's velocity, acceleration and optionally jerk limits. repose-trajectory builds trajectories, stores them in a fixed-size payload, and plays them back.
The pieces
| Trajectory payload | CuTrajectoryPayload<N, MAX_POINTS>: timed knots plus the interpolation that reconstructs motion between them. |
| Timing joint paths | parameterize: waypoints → trajectory, with trapezoidal, S-curve, minimum-jerk or cubic profiles. |
| Cartesian blending | Straight TCP lines with rounded corners in per-waypoint zones, then timed along the path. |
| Following | CuFollowTrajectoryTask: sample the active trajectory each cycle, with preemption. |
Two routes to a trajectory
joint waypoints (e.g. a plan) ──► parameterize ───────────────────────────► CuTrajectoryPayload
TCP waypoints + zones ──► blend_cartesian_path ──► parameterize_cartesian_path ──► CuTrajectoryPayload
│
▼
CuFollowTrajectoryTask → controllerBoth timing functions take the same CuTimingParams and report a CuTimingStatus. Both set the payload's interpolation to the reconstruction their limits were verified on, so the follower executes exactly the motion that was checked.