Skip to content

Errors

MotionError

A command the controller refuses or fails raises MotionError, carrying a RobotError with a code, a title, a cause, an effect and a remedy from the controller's catalog:

from parol6 import RobotClient, MotionError

with RobotClient() as rbt:
    try:
        rbt.move_l([900, 0, 0, 0, 0, 0], speed=0.5)
    except MotionError as e:
        print(e)            # IK: target unreachable — ... — Verify target is within workspace...

The codes are on Errors. The ones you meet first:

Code When
MOTN_NOT_HOMED Planned motion before the robot is referenced: home() first
IK_TARGET_UNREACHABLE, IK_PARTIAL_PATH The pose, or part of a Cartesian path, has no solution
SYS_ESTOP_ACTIVE The E-stop is pressed or a protective stop is latched: release, then reset()
SYS_CONTROLLER_DISABLED The controller is disabled
SYS_SELF_COLLISION The path collides with the robot itself or with a declared shape
MOTN_CANCELLED The command was discarded by stop(), an E-stop, a stream taking the arm, a teleport, or a failure ahead of it in the queue
COMM_VALIDATION_ERROR, COMM_DECODE_ERROR A malformed command; usually a version mismatch between client and controller

error() returns the current error, activity() the state with the error description, and the status stream carries error.

ValueError and TimeoutError

The client checks parameters before sending: a wrong number of angles, a speed outside (0, 1], a non-finite value, an unknown tool action raise ValueError locally. A blocking call whose completion is not confirmed in its timeout raises TimeoutError; the command stays queued, and stop() cancels it. A query that gets no reply returns None, except the TCP queries and bounded I/O writes, which raise rather than report a misleading value.

ConnectionError

A controller restart during a wait changes the session, and the wait raises ConnectionError: the index you were waiting for belongs to a controller that no longer exists.

Recovering

After Do
stop() Nothing: the controller is enabled and holding; queue again
estop() or the E-stop button Release the button; reset()
reset_state() The shapes, tool, errors, pause, profile and speed are back to defaults; select the tool again; a protective stop stays until reset()
A collision or stall on the hardware Stop; move the arm clear; home(calibrate=True)
A failed command in the queue Everything behind it was cancelled: re-queue from the failed one

Comments


Found a mistake on this page? Edit it on GitHub · Report it · Get help · This page as Markdown · llms.txt · The whole manual as PDF