Skip to article

Modes, sessions and stopping

Checked 2026-11-01

This reference is for control-software developers. The shared controller handles session setup for replay, teleoperation and tuning; do not run a second manual setup sequence alongside it.

Reset selects Legacy mode. Extension configuration resides in RAM and is not automatically restored from EEPROM. Before a new start, software must check capabilities and support protocol 9.0.

Legacy mode

Legacy control through the standard STS register interface

Legacy mode supports the standard STS register interface, including motor power, operating mode, position and speed commands, and status readings. Existing STS software can use registers 0–86 without enabling the extension.

In legacy position modes, enabling motor power without a new position command holds the measured position, even outside the saved limits. It does not replay an old target or move the shaft to the nearest limit. New position commands are still capped to the saved limits.

The extension uses its own motion and control settings. Gain values should not be copied directly between the two modes because their scales differ. Support for the standard commands does not guarantee identical physical behavior across all servo models.

Starting and stopping extension mode

Extension-session lifecycle

The following sequence uses the register numbers and commands documented later. Selection prepares a session; enabling motor power starts control.

  1. Find the connected servo IDs and read each servo’s capabilities. Check for ARMC and version 9.0. Repeat this check after a reset or firmware change.
  2. Turn motor power off by setting legacy torque-enable register 40 to 0. Finish any existing session and apply any permanent legacy settings.
  3. Write and read back the complete configuration (0xA0), including velocity feedforward settings and the gravity slew rate.
  4. Write mode=1 and a new nonzero session number to 0xB8 (3 bytes total). This selects extension mode and prepares the next start; power remains off.
  5. Set register 40 to 1. The firmware checks sensors, protection status, configuration and saved position limits, then captures the measured position as the initial hold target. Command counters, I correction and gravity compensation start at zero. Read 0xC1 and wait for the correct session, current usable measurements, motor drive enabled and output ready.
  6. Send targets and any gravity updates. Read feedback to check which commands were accepted and how closely the servo follows them.
  7. The servo finishes its last move and holds the destination until given a new target. Set register 40 to 0 to turn motor power off and end the session. To return to legacy mode, keep power off and write mode=0, session=0 to 0xB8.

If a start fails, register 40 returns to 0. Its normal write acknowledgement alone does not confirm successful startup: check register readback and feedback. Every start attempt consumes the prepared session. After a failed start, torque-off or protection shutdown, correct the cause and write 0xB8 with a new session number before enabling torque again. Repeating torque enable while control is running preserves its target, compensation and command counters.

Commands that move or adjust a powered motor require ready hardware, no reported fault, and sensor readings no more than 2 ms old. The controller normally updates every 1 ms and accepts intervals up to 2 ms. Longer gaps cause motor output to be disabled.

While using the extension, avoid legacy writes to operating mode register 33 or motion registers 41–47: they turn motor power off and leave extension mode. Saving permanent settings also ends extension control. Setting register 40 to 0 leaves extension mode selected, ready for another session setup.

If host commands stop arriving

The servo finishes the last accepted move and keeps holding that destination. Gravity compensation continues toward its last requested value and stays there. No repeated messages are needed to keep the session active, and loss of host communication does not itself change the target or turn motor power off.

To change where the servo goes, send another target. To release the motor, set torque enable to zero. Sensor freshness checks, motor protection, and the firmware watchdog remain active while moving and holding.

Distinguish three timing mechanisms

Mechanism What it checks
Firmware sensor freshness Usable local measurements; powered control commands require readings no older than 2 ms
Host checks Frame/feedback age and gravity deadlines; a violation triggers the applicable cleanup attempt
Missing bus messages Not itself a firmware timeout that clears hold or the last gravity request

The host command interval is not the servo’s 1 ms control interval. A servo can continue accepted movement after the host stops running.

Tool stop behavior

Tool / event Expected action
Extension replay: normal completion or Ctrl+C Retain the last target and powered hold; with gravity configured, service remaining motion and confirm final compensation
Teleoperation: normal completion or Ctrl+C Stop issuing new targets and retain powered hold; completion waiting depends on whether gravity is configured
Tuning: normal completion Restore configured baseline and retain hold
Tuning: Ctrl+C during a batch Interrupt and attempt torque-off
Legacy replay: normal completion Retain hold at the last pose
Legacy replay: Ctrl+C or failure Attempt torque-off
Recorder: successful completion Leave selected motors unpowered
Closing the viewer Does not affect hardware control
Killed process or disconnected bus Cleanup may never arrive; firmware can retain the last target and gravity

With a gravity model configured and motors ready, shared-controller completion services remaining movement and gravity, waits for 200 ms of rest with a 30 s completion timeout, and confirms the final compensation. Rest means idle planners and each measured position staying within a one-count range throughout those 200 ms; it does not establish zero target error.

Model errors, rejected updates, stale feedback, lost ownership, alarms and validated temperatures at or above 60 °C trigger attempted verified torque-off. One exception is a missed gravity deadline during an established hold when two fresh passes confirm healthy stationary motors in the same session. The run still fails with holdRetained: true and does not resume automatically.

Without a gravity model, the shared controller does not perform this final rest wait. Named-pose replay normally waits for each destination within its configured tolerance, but Ctrl+C can interrupt that wait. Replay or teleoperation can therefore exit while the motor continues toward the last target.

Ctrl+C is not a hardware emergency stop. Completion and torque release depend on working communication; the installation must provide a safe mechanical state.


Documentation home · Source revision: a995f77. Extension 9.0.