Robot interface · repose-robot-interface
Available bridges
Hardware bridges live in the repose-bridges repository, outside the core workspace. The MuJoCo bridge lives in the core repo. All of them implement the standard channels.
Safety gates
Hardware bridges never move a robot by accident. Two independent opt-ins are needed:
- Build: the
controlcargo feature. Without it the bridge has no Tx channels at all and is a read-only monitor. - Config:
"allow_control": truefor session commands, and additionally"allow_motion": truefor motion. Both default tofalse.
The robot-app template turns both on for you, because its purpose is to move the robot. Your own graphs should keep them off until you need them.
igus ReBeL: repose-igus-cri
6-axis igus ReBeL over CRI (TCP). Default address 192.168.3.11:3920.
| Type | repose_igus_cri::CuIgusCriBridge |
| Channels | Rx joint_state, session_state, cri_status (vendor). Tx session, joint_command with control. |
| Modes | Velocity streaming (CRI jog with position-error feedback) and position moves (Move Joint). Effort is refused. |
address | Numeric socket address of the controller (no DNS lookup). |
allow_control, allow_motion | The config opt-ins above. |
velocity_percent | Speed cap for joint moves, 0–25 %. |
max_jog_percent, jog_full_scale | Velocity streaming: jog cap and the joint speed at 100 % jog (measured 60 °/s on a V980-14). |
position_gain | Position-error feedback added to streamed velocities, 1/s. |
command_timeout | Velocity commands older than this become zero jog. |
goal_tolerance, max_step | Per-joint "reached" tolerance, and an optional largest step between target and measured angle. |
stale_after, connect_timeout | Observation age limit and startup timeout. |
Universal Robots & URSim: repose-ur
UR e-Series with PolyScope 5 over RTDE (feedback), the dashboard server (session) and a resident URScript loop (motion). Default address 127.0.0.1:30004, which is URSim on the same machine. Physical UR, CB3 and PolyScope X are not yet validated.
| Type | repose_ur::CuUrBridge |
| Channels | Rx joint_state, session_state, ur_status (vendor). Tx session, joint_command with control. |
| Modes | Velocity streaming (feed-forward joint velocity plus position-error feedback). Position mode for individual movej commands. Effort is refused. |
address, script_port, dashboard_port | Controller address and service ports. |
allow_control, allow_motion | The config opt-ins. |
speed, acceleration | Leading-axis limits for movej. |
frequency, position_gain, command_timeout | Streaming loop rate, feedback gain, command age limit. |
max_step, goal_tolerance, move_timeout | Step limit, "reached" tolerance, move timeout. |
See Run on URSim for the simulator setup (Docker, Remote Control, power-on).
MuJoCo: repose-mujoco-sim
A TCP client to a MuJoCo sidecar process, one JSON line each way per Copper cycle. Fixed at 6 joints (the ReBeL). Position commands only.
| Channels | Tx joint_command, Rx joint_state. No session. |
host = "127.0.0.1" | Sidecar address. |
port = 8765 | Sidecar port. |
read_timeout = 0.25 s | Socket read, connect and write timeout. A silent sidecar can't hang the runtime. |
→ {"type":"command","q":[q0,q1,q2,q3,q4,q5]}
← {"type":"state","q":[…],"qd":[…],"time":<sim seconds>}Enable it through the umbrella crate's mujoco-sim feature. See Simulation.
Swapping bridges
bridges: [
(id: "robot", type: "repose_ur::CuUrBridge",
config: {"address": "127.0.0.1:30004", "allow_control": true, "allow_motion": true},
channels: [Rx(id: "joint_state"), Rx(id: "session_state"), Tx(id: "joint_command"), Tx(id: "session")]),
],Exact type paths and full config examples are in each bridge's README. The robot-app template generates the right entry from robot.ron.