Skip to content

enter_idle_mode

Runs at once Any mode Takes control

Switch to IDLE mode. From EXEC mode the arm first brakes along its planned path to rest, at the joints' acceleration limits (at most about 0.15 s from full speed), then the robot switches. A program still queued is cancelled: its commands fail with ABORTED, and the robot refuses new moves with MOTION_ABORTED until clear_errors(). To cancel a program and stay in EXEC mode, use stop().

From JOG mode or a real-time stream the robot switches at once, without braking. Homing in progress is abandoned, and the arm is then not homed. It also ends motors off and firmware flashing, like their own release_safety_stop() and exit_flashing_mode(). In the error state it has no effect: the robot returns to it while an error is latched; call clear_errors().

In IDLE mode an enabled, homed arm with gravity compensation on is in freedrive: it holds itself up and can be moved by hand. Otherwise every joint holds still.

Syntax

robot.enter_idle_mode(wait=None)

Arguments

Name Type Default Description
wait bool | None None Wait until the robot reports IDLE mode, up to 10 s. None follows the client's sync setting.

Returns

Nothing.

Examples

robot.enter_idle_mode(wait=True)

Further details

Warning

From JOG mode or a real-time stream at speed the arm does not brake: in freedrive it coasts until friction stops it. Stop the motion first, then switch.

Usage restrictions 2 codes

This command runs at once; it is not queued. The robot accepts it in any mode and state, from the client that holds control or when no client does.

It answers with one of these codes when it does not carry the command out:

  • [6101] Control held by another client — another client holds control; the message names it
  • [6025] RTI not running or not answering — rTI did not answer within 1 s: it is not running or not responding. The command may still have taken effect

In Python, a code above raises CommandRejected; its number is the code. The call raises:

  • CommandRejected: Another client holds control. Or RTI refused it or did not answer within 1 s (Errors:).
  • RobotTimeout: The robot did not answer within 5 s, or, with wait, did not report IDLE mode within 10 s.
  • RobotConnectionError: The client is not connected.

If the connection drops while the call waits for the robot's answer, it raises CommandRejected with the code CONNECTION_LOST (DISCONNECTED after disconnect()); while it waits for the robot's status, RobotConnectionError.

Like every immediate command, it also answers BAD_ARGS when a raw client sends a value the robot cannot read at all, and INTERNAL when it fails inside the robot.

Protocol

A client that does not use robotclient sends this over the TCP command protocol (port 29000) for the example above:

{"id": "c1", "cmd": "enter_idle_mode", "args": []}

See also