Expand description
Robot-agnostic unified joint controller for copper-rs.
CuControllerTask sits between a trajectory follower
(CuTrajectoryFollowOutput) and a robot bridge. It consumes the follower
setpoint plus the measured joint state and emits one unified
CuJointCommandPayload — the only command type a bridge has to carry.
Simulators and hardware bridges implement the same
joint_command/joint_state channels, so swapping sim for a real robot
is a RON graph change, not an application change.
Behaviour per cycle:
- No setpoint yet:
Idle, holding the last measured state (zeros before the first state arrives). - Setpoint + fresh state: command mirrors the setpoint; status maps the
follower status (
Running→Running,Finished→Holding,ErrorEmptyTrajectory→Fault). - Tracking error above
tracking_error_limit:Fault, command holds the measured state instead of chasing the setpoint. - Setpoint without any measured state:
Fault, holding the last command.
State that affects later cycles (last command, last status) round-trips
through Freezable, so deterministic replay resumes correctly.
Structs§
- CuController
Params - Parameters of
CuControllerTask; the nodeconfig:block. - CuController
Task - Unified robot-agnostic joint controller task.
- CuEffort
Gains - Effort-mode PD gains.
- CuJoint
Command Payload - Unified joint command: the only command payload a bridge has to carry.
- CuRate
Limit - Per-joint command rate limit (position mode only).
Enums§
- CuController
Mode - Command level a bridge is asked to apply.
- CuController
Status - Controller status carried by
CuJointCommandPayload. - CuJoint
Effort - A joint effort carries the physical unit of its joint (torque or force).