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.
6.3 KiB
UME / CMVR-ES validation gates
This checklist is part of the first UME migration. Passing a software gate
does not authorize a physical power-on. The checked-in UME device entries and
their hardware_enabled fields remain false.
The current revision has no production setpoint producer for
UmeTeleopTask::submitSetpoint() and no haptic consumer for returned follower
effort. M9 therefore validates the framework, protocol and migrated original
algorithm separately; it is not an end-to-end motion or force-feedback test.
M9: software and network validation
Run these gates on both target CPU architectures before deploying:
- Build the complete
cmvr_estarget with tests enabled. - Run the UME legacy controller and Pinocchio model-adapter golden tests.
- Run the Damiao codec, CAN-FD chain, and
UmeRobotArmlifecycle tests. - Run the process-wide control-authority tests.
- Run the gRPC client,
UmeTeleopTask, andArmTeleopServicetests. - Repeat the concurrent client/task/service tests to screen for shutdown and reconnect races.
- Start each checked-in edge profile without UME hardware and verify that it
never opens
can4/can5or issues actuator enable frames.
The communication tests must demonstrate all of the following:
- an
OpenSessionmanifest mismatch is rejected before backend activation; - a second controller cannot acquire the same robot control resource;
- sequence numbers are non-zero and strictly increasing per session;
- the sender and receiver use capacity-one, latest-only command storage;
- a setpoint whose local validity has expired is never dispatched;
- heartbeat loss, lease loss, stream cancellation, and backend failure call the robot safe-stop boundary;
- reconnect clears pending motion intent and starts a new sequence space;
StopSessionis attempted before client cancellation;- the legacy unary ArmService cannot issue motion, enable, calibration, or fault-reset commands while the teleoperation lease is active;
torqueOffandstopMotionremain available as safety overrides.
Before a real follower backend can be enabled, control authority must also be extended to every local arm task and to the underlying MotorService resources. The current process-wide lease covers ArmTeleop and unary ArmService only.
For a wired two-computer run, record at least:
- one-way command age at the robot ingress;
- command mailbox overwrite and rejection counters;
- heartbeat and control-lease remaining time;
- servo apply duration and deadline misses;
- disconnect detection-to-safe-stop time;
- packet loss, reordering, and delay from an explicit network impairment profile rather than an assumed LAN condition.
No end-to-end stability or transparency claim is supported until those logs are tied to a specified controller rate, robot servo period, payload, motion envelope, and network impairment profile.
M10: staged physical commissioning
Every row is a separate sign-off. Do not combine first power-on with a human wearing the UME.
- Independent physical emergency stop is installed and verified.
- CAN arbitration/data bitrates and CAN-FD+BRS MTU are verified for each interface.
- Motor product, firmware, command ID, feedback ID, and reported motor ID are read back and matched to the configuration.
- The four-bit Damiao feedback status meanings and raw temperature limits are verified for the exact product/firmware and entered as an explicit per-joint whitelist/threshold contract.
- Joint direction and zero reference are verified one joint at a time with the mechanism unloaded.
- Mechanical position, velocity, and torque limits replace the checked-in placeholders and receive an independent review.
- Motor feedback timestamps and the 800 Hz cycle are measured on the UME target computer under load.
- The exact Damiao firmware's Disable acknowledgement semantics are documented and verified. Until then, SocketCAN send success is only evidence that the local kernel accepted the complete frame batch.
- Because MIT feedback has no sequence field, stale request/reply correlation is resolved by a reviewed firmware marker or by measured, enforced bus timing; draining only the frames already queued is not sufficient evidence.
- Every UME control-thread I/O operation is shown to be deadline-bounded and interruptible on the target kernel. The configured shutdown timeout is currently a diagnostic failure threshold, not a C++ timed-join primitive.
- With torque disabled, both edge profiles run for at least 30 minutes without sequence, deadline, lease, or reconnect anomalies.
- With the UME fixed to a stand, each joint is enabled independently at a low torque limit and its watchdog disable path is measured.
- Both UME arms are tested together on stands; CAN and CPU deadline margins are recorded.
- The robot backend's group
servoJsemantics and worst-case call duration are measured. Sequential per-joint dispatch is not accepted as an atomic group backend without a documented skew bound. - gRPC writer backpressure cannot stall the independent robot watchdog, and an expired lease cannot be regranted until safe stop is confirmed.
- TouchScreenTask and direct MotorService commands are either disabled by the deployment profile or participate in the same resource authority.
- Robot-only low-speed setpoint execution is validated before connecting the leader-side algorithm.
- Wired-network cable removal, peer process kill, delayed packets, stale commands, duplicate sequences, lease theft, and robot fault injection all lead to a bounded safe stop.
- The original UME gravity/friction/feedback controller is commissioned on a stand with force feedback initially clamped to zero, then increased in reviewed steps.
- Only after all previous evidence is archived may a supervised human test be considered under a separate risk assessment.
Evidence record
For each completed physical gate, archive the exact Git revision, installed
output/ checksum, configuration files, model and calibration SHA-256 values,
test operator, hardware serial numbers, raw logs, and pass/fail decision. A
successful build or simulator run must not be recorded as physical validation.