Decisions › D22
Identify: a harmless way to show which physical thing a row is
Context
The expected-setup file records what each board drives. On 23 October that was camera-confirmed by wiggling each board and tracking its ArUco tags. That motion was turned into a standard action.
The decision
identify makes a device show itself harmlessly, so you can tell which physical thing a row is: a motor wiggles a little, a camera shows what it sees, a light blinks. It never changes the CAN id (that is a separate action). The title names how it identifies, so you read what will happen before pressing: “Identify (wiggle)”, “Identify (snapshot)”.
For a moteus board it is a slow wiggle of 5 degrees either way about the current position, three cycles at about 1 Hz, at low torque and velocity, with the stop in a finally. Its danger class is moves. A config interlock runs first: the safety keys are read back whole and must equal the deployment record's. A loaded joint moves less and only away from its stop. On the adapter, “Identify each board” does it for every answering board in id order. A RealSense camera saves one colour frame as a JPEG and returns its path; it has no light to blink.
Why
There is no verbatim quote for this one on file. The commit log credits Zach with the idea of the motion that re-identifies a board; the design is written in the vocabulary doc. The page says so rather than turning a paraphrase into a quote.
A device with no harmless way to show itself does not register the action. The adapter has no light, so its row offers “Identify each board”, which is the same name acting on its boards.
Options considered
| Way to show itself | Where | Reason |
|---|---|---|
| A light blinks | Not available on the rack's devices | The adapter has no light, and the D405 cameras have no LED or projector. |
| A slow, small wiggle | A moteus board | Chosen: a motor can show itself without any new hardware. Danger class moves. |
| One snapshot saved as a JPEG | A RealSense camera | Chosen: shows what the camera sees, and returns the file's path. |
| Change the CAN id | Never | Identify never changes the id; that is the separate set_id action. |
Consequences
- A moves run that does not finish is followed by the plugin's stop (see dry run first).
- Its dry run lists the preconditions: nobody else holds the adapter, the bus lock is free, the board answers a query, it reports mode 0 with no fault, its configuration passes the interlock, and nothing is in the way of the joint.
Evidence
- Runs and Identify: captures from the appReport, 2026-10-24. Evidence for this decision.
- One action vocabulary across drivers (record v0.1)Contract doc, 2026-10-22. The standard action names, their one label each, the four danger classes, the dry run and the model_id identity key.
- The expected setup (a rig manifest)Contract doc, 2026-10-23. A small file that says what this PC should see, so the page can say 6 of 7 boards and name the missing one.
Commits in the app's repository (private):
abcb41a2026-10-23 Vocabulary: identify17f1fd562026-10-23 Moteus and RealSense identifyd2117bf2026-10-23 Utilities menu: identify in the Motion group