Decisions › D22

Identify: a harmless way to show which physical thing a row is

Decision
D22
Date
2026-10-23
Status
Accepted
Area
hardware safety

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 itselfWhereReason
A light blinksNot available on the rack's devicesThe adapter has no light, and the D405 cameras have no LED or projector.
A slow, small wiggleA moteus boardChosen: a motor can show itself without any new hardware. Danger class moves.
One snapshot saved as a JPEGA RealSense cameraChosen: shows what the camera sees, and returns the file's path.
Change the CAN idNeverIdentify 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

Commits in the app's repository (private):

  • abcb41a 2026-10-23 Vocabulary: identify
  • 17f1fd56 2026-10-23 Moteus and RealSense identify
  • d2117bf 2026-10-23 Utilities menu: identify in the Motion group

← All decisions