Add the UME RobotArm and Damiao CAN-FD path, migrate the legacy UME controller, and introduce guarded cross-machine gRPC teleoperation with lifecycle, authority, configuration, and test coverage.
4.7 KiB
UME to CMVR-ES Teleoperation Architecture
Scope
This document freezes the first implementation stage of the wired, cross-machine teleoperation path:
- both edge computers run
cmvr_es; - the UME computer owns the Damiao SocketCAN-FD interfaces;
UmeRobotArmis aRobotArmbackend;- the UME computer performs the leader/follower model calculations;
- the robot computer validates and executes joint-servo references;
- the transport is a versioned gRPC bidirectional stream;
- the original UME algorithm is migrated before any SEW fusion work.
SEW fusion, passivity research, paper experiments, and physical human testing are deliberately outside this implementation stage.
Target process and ownership boundary
UME cmvr_es
UmeRobotArm
Damiao SocketCAN-FD
UmeHapticLoop
local safety guard
|
+-- UmeLegacyAlgorithm
|
UmeTeleopTask
GrpcArmTeleopClient
|
| wired Ethernet / gRPC bidi stream
v
Robot cmvr_es
ArmTeleopService
control lease
latest-only command slot
watchdog
safe servo executor
|
v
RobotArm
The UME high-frequency loop never performs a network RPC. Network workers and hardware loops exchange only bounded latest-state snapshots.
Implemented boundary in this revision
This revision establishes the device, algorithm-library, session-transport and robot-backend boundaries, but it intentionally does not connect them into a physical end-to-end controller:
UmeRobotArmowns one eight-axis Damiao bus and a bounded local torque loop. It starts passive, requires an explicit fresh torque command beforetorqueOn, and latches watchdog/transport faults.- a successful SocketCAN send means that the complete frame batch was accepted by the local kernel before its deadline. The current MIT transport has no reviewed Disable acknowledgement, so software must not describe that result as actuator-confirmed torque-off.
- the original UME dynamics, friction, stiction and haptic projection code is a
standalone tested library under
algorithms/controllers/ume_legacy; UmeTeleopTaskowns reconnect, heartbeat, sequence and a capacity-one outbound mailbox. ItssubmitSetpoint()input is deliberately an algorithm boundary; no production source calls it yet;- the server-side
RobotArmTeleopBackendis implemented and tested behind an explicit capability gate. The currentMotorRobotArmremains unavailable because itsservoJpath is sequential per joint rather than an accepted atomic/timed group primitive; - server state is currently returned with session events. The configured requested state rate is not yet an independent periodic publisher;
- follower effort is validated and transported when a backend declares a verified source, but it is not yet consumed by a UME haptic coordinator.
Accordingly, this code is an M0-M9 fail-closed framework and original-algorithm migration, not a claim of runnable force-feedback teleoperation. The next integration step must add a concrete UME-to-follower retargeting producer, connect verified follower effort to the local haptic coordinator, and retain the high-frequency/network-thread separation above.
Safety invariants
- Opening a CAN interface never enables a motor.
- Clearing a fault never arms a motor.
- A reconnect creates a new session and never restores active motion.
- Cross-machine
steady_clockvalues are diagnostic only. A receiver derives command expiry from its local receive time plusvalid_for_us. - Commands are strictly increasing by sequence within one session.
- Queues on the cyclic path are latest-only and bounded.
- Invalid or stale follower effort ramps haptic feedback to zero.
- Model, joint order, units, and calibration hashes must match before motion.
- New physical hardware configurations remain disabled by default.
- A software stop does not replace an independent physical emergency stop.
- UME hardware enable also requires an explicit firmware-reviewed feedback status whitelist and raw temperature thresholds; empty values never mean "accept all".
- UME shutdown timing is diagnosed against a configured budget, but physical torque removal still requires an independent emergency-stop path until a reviewed actuator Disable acknowledgement exists.
Initial rate boundary
- UME local hardware/haptic loop: configurable, initially 800 Hz to match the legacy UME setup.
- network command rate: configurable independently of the local loop.
- robot servo rate: selected from the robot backend capability and never inferred from the network rate.
No hard real-time or stability claim is made until the target computers and physical devices have completed staged validation.