Skip to content

get_status

Runs at once Any mode Open to every client

Ask the robot for its state now, with the joint angles. The robot answers at once from its shared memory. The answer is not the status that latest_status() keeps: it adds the joint angles, the pose angle convention and the planner's state in one dict, and it names three flags differently. Most programs read latest_status(), which needs no round trip to the robot.

Syntax

robot.get_status()

Arguments

None.

Returns

dict

A dict: mode, state and homed: as in latest_status(). pose_angles: "xyz-mobile", the pose angles R = Rx Ry Rz that this robot reads and returns. runtime_version: the robot software's version, such as "0.10.0". protocols: commands, rti and telemetry, the protocol versions. error_active: 1 while an error is latched (err in the status). safety_violation: 1 while a safety monitor error is latched (safety in the status). software_estop: 1 while the dashboard's software E-stop is on (estop in the status). exec_paused, exec_settling, exec_stopping: 1 while a program is paused, waits for the arm to settle at the end of a move, or brakes for a stop. exec_completion_policy: "commanded", "settled" or "strict". planner: the planner's state: queue_depth, active_command, executing_seq, completed_seq, current_profile, last_error, last_diagnostic, motion_aborted, ik_config, default_ik_solver and default_fk_jacobian_backend (see the Status fields reference). joints: the measured joint angles, in degrees, J1 first.

Examples

status = robot.get_status()
status["mode"], status["planner"]["queue_depth"]
Usage restrictions never refused

This command runs at once; it is not queued. The robot accepts it in any mode and state, from every client.

It never answers with an error code.

In Python, the call raises:

  • RobotTimeout: The robot did not answer within 5 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": "get_status", "args": []}

See also