release_control¶
Runs at once Any mode Open to every client
Give up control of the robot. Another client can then take control. It is never refused: a client that does not hold control gets released false. Moves already queued keep running. A collision-detection change this client made returns to its start value.
Syntax¶
Arguments¶
None.
Returns¶
Any
{"released": bool, "holder": label or None}: whether this client held control and gave it up, and who holds control now ("ip:port").
Examples¶
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: