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 payloadCuTrajectoryPayload<N, MAX_POINTS>: timed knots plus the interpolation that reconstructs motion between them.
Timing joint pathsparameterize: waypoints → trajectory, with trapezoidal, S-curve, minimum-jerk or cubic profiles.
Cartesian blendingStraight TCP lines with rounded corners in per-waypoint zones, then timed along the path.
FollowingCuFollowTrajectoryTask: sample the active trajectory each cycle, with preemption.

Two routes to a trajectory

text
joint waypoints (e.g. a plan) ──► parameterize ───────────────────────────► CuTrajectoryPayload
TCP waypoints + zones ──► blend_cartesian_path ──► parameterize_cartesian_path ──► CuTrajectoryPayload
                                                                                   │
                                                                                   ▼
                                                                    CuFollowTrajectoryTask → controller

Both 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.

API reference