Table of Contents |
---|
...
2022/03/14: Initial 2.0 API documentation; motion and setup commands.
2022/03/21: Preset name argument added to Move and Combined move. Collision checking against DSM has been moved to an explicit new argument in Move command. Combined move structure row clarifications.
2022/03/30: GetTCPPose description added (formerly duplicated GetJointAngles). DSM command descriptions added. Additional desctiption added to SetAlternateLocation’s “mode” argument. Moved SetServos location for better organization.
2022/04/08: SetResponseType and SetUnits can now be stored per IP address rather than per client. Example CSV responses added to DSM commands. Robot Presets and Object states are now stored to disk so project reload will have the last set values. SetInterruptBehavior timeout value is now used as the timeout for the alternate location mode: 0 with complete_move: 1, and mode: 1. UpdateTarget can now optionally re-generate the autoconnects associated with that target.
2022/04/14: AddBox description updated to include box origin and offset argument. AddFrame description updated to note that frames are not saved to disk.
2022/04/21: API specs for enabling a subset of a project added (Activate, Deactivate, UpdateInactiveRobotSettings).
2022/05/04: SetUnits and SetResponseType descriptions updated to make it clear that only new connections will be affected by set_ip_default.
2022/05/12: GetTCPPose YAML response corrected, the key is pose, not tcp_pose. CreateTarget CSV response delayed response corrected from CreateTarget to CreateTargetResult. Added a note to the SetRobotPreset description that ReleaseControl must be called first, if the number of axes on the robot is changing. Added to the UpdateTarget description to indicate that auto connect constraints will be maintained at the targets new location. Updated CancelMove description to note that it is only accepted in OPERATION mode.
2022/05/31: Preset argument description updated in Move and CombinedMove. GetJointAngles is being renamed to GetJointConfiguration, but both are supported currently.
2022/06/01: Added acceptable string characters to the formation rules section.
2022/06/08: Added SetMaxLinearSpeed and SetMaxLinearAcceleration descriptions.
2022/06/14: More SetAlternateLocation examples added. Clarified the behavior of the reset flag for SetMaxLinearSpeeds and SetMaxLinearAcceleration.
2022/06/17: Corrected SetMaxLinearAcceleration’s max value.
2022/07/01: Updated Move with supported move type and goal combinations.
2022/08/08: Clarified the effect CancelMove has on queued Move and CombinedMove commands.
2022/08/30: Added OverrideInspectError, ToggleMonitorFaults, Calibrate descriptions.
2022/08/31: Updated Queuing Moves when a robot preset changes. Updated Queuing Moves with smoothing support. Updated Move spec that supports robot preset changes. Updated SetRobotPreset spec.
2022/10/03: Updated DeactivateRobots.
2022/12/03: (2.2)Updated CreateTarget to add a new target without connections.
2022/12/03: (2.2)Added RenameTarget command.
2022/12/03: (2.2)Added RemoveTarget command.
2022/12/03: (2.2)Added AddConnection command.
2022/12/03: (2.2)Added RemoveConnection command.
2022/12/03: (2.2)Updated Move with support for external axes and triggers.
2022/12/03: (2.2)Updated CombinedMove with support for external axes and triggers.
2022/12/03: (2.2)Updated CancelMove with ramp-down speed at a fixed 80%.
2022/12/03: (2.2)Updated SetDefaultProject to clear the default project if project name input is not specified.
2022/12/03: (2.2)Added GetLoadedProject command.
2022/12/03: (2.2)Added GetRobotPresets command.
2022/12/03: (2.2)Updated UserLog with allowed characters in a user log.
2022/12/04: (2.2)Danger/risk of interleaving RTR with non-RTR move commands is documented in the Move command.
2022/12/05: (2.2)GetJointAngles command is deprecated and replaced by GetJointConfiguration.
2022/12/05: (2.2)Added move type and target type support matrix.
2022/12/05: (2.2)Added two cautionary statements regarding mixing RTR with non-RTR moves and robot off-roadmap behaviors for Move command.
2022/12/09: (2.2)Added a cautionary statement regarding mixing RTR-controlled moves with non-RTR stop commands.
2023/01/04: (2.2)SetServos command is removed.
2023/01/13: (2.2)Move command and queued move smoothing behavior description is updated.
2023/01/18: (2.2)API command string size limit is specified.
2023/01/30: (2.2)Move command trigger behavior description is updated.
2023/03/06: SetRobotPreset command description is updated
2023/03/22: Move Type and Target Type(joint configuration) Support is updated.
2023/03/24: Added API Command Determinism section.
2023/03/24: (2.3)Added GetFrames command.
2023/03/24: (2.3)Added GetObjectStates command.
2023/03/24: (2.3)Updated SetDefaultProject command to allow
project_name
to be optional.2023/03/24: (2.3)Updated GetJointConfiguration command with a new argument
native
.2023/03/24: (2.3)Updated Move command to support joint configuration target types.
2023/03/24: (2.3)Updated Move command to support relative moves including external axes.
2023/03/24: (2.3)Updated SetAlternateLocation command with a new argument
timeout
.2023/03/24: (2.3)Updated SetInterruptBehavior command default values.
2023/03/24: (2.3)Updated DeactivateRobot command to allow different key values for
treat_as_obstacle
.2023/03/24: (2.3)Updated ActivateRobot command with a new argument
project_name
.2023/03/24: (2.3)Updated CancelMove command with a new argument
acceleration_factor
.2023/03/24: (2.3)Updated UpdateTarget command with new arguments
object_states
andpose
.2023/03/24: (2.3)Updated ClearFaults command with new argument
reset_connection
.2023/03/27: (2.3)Updated Move command with new argument
costs
.2023/03/28: Updated Shutdown command fault codes.
2023/03/30: (2.3)Removed UpdateInactiveRobotSettings command due to redundant functionality as DeactivateRobot.
2023/03/30: Updated the list of commands that are stored on disk and added the list of commands that are not persistent, under Commands Stored on Disk section.
2023/04/03: Updated LoadProject command with argument
upgrade
.2023/06/12: (2.4) Updated accepted formats for a Boolean value.
2023/06/12: (2.4) Updated Move command with a new argument
shortest_path_only
.2023/06/12: (2.4) Added SetWorkcellState Command.
2023/06/12: (2.4) Updated EnterOperationMode command with argument
connect
.2023/06/12: (2.4) Updated UpdateTarget command with arguments
joint_config
andref_frame
.2023/06/12: (2.4) Updated GetJointConfiguration command with argument
with_joint_names
.2023/06/13: (2.4) Move command can use
external_axes
to specify a relative direct pose move.2023/06/13: (2.4) Added GetTargets command.
2023/06/13: (2.4) Added GetStatefulObjects command.
2023/06/13: (2.4) Added GetUnits command.
2023/06/16: (2.4) Updated description of the system responses to null values.
2023/07/14: (2.5) Added
validation
argument to UpdateTarget command2023/07/19: (2.5) Added BlockMove + ContinueMove commands (more details to come), also updated CombinedMove with new optional blockMove argument
2023/08/02: (2.5) Updated Move command with a new argument
constraint
.2023/08/09: (2.5) Correction of the preset-switching behavior in a CombinedMove command.
2023/08/10: (2.5) Updated name of HoldMove and ResumeMove commands (prev. block/continue)
2023/08/11: (2.5) Added MultiRobotMove command and updated SetAlternateLocation with a new mode
multirobot
.2023/09/22: (2.5) Replaced Move command argument
constraint
withconstraints
.2023/09/28: (2.5) Add documentation about yaml parsing per RAPID-38095
Goal
The ASCII API is a fundamental component of how a user interacts with the Realtime Controller and ultimately controls a robot. In order to effectively complete a task, the user must be able to retrieve information from the Rapidplan Create project, set behavioral characteristics of the robots, and move the robots either following the offline motion plans or with conventional move types.
...
The ASCII strings received by the Realtime Controller will be formatted to adhere to the inline YAML format, for robust parsing. Inline YAML allows the API to use key-value pairs (KVPs). KVPs will be comma delimited, much like the current API, but attaching keys to the values will allow parameters to come in any order. Additionally, there can be multiple optional parameters and any combination of them. If the optional parameters aren’t used, they can simply be omitted and a default value will be used. Another benefit is readability, since now the values in the requests can be identified based on their key.
Note: the YAML 1.2 spec requires whitespace between after the :
in key value pairs.
{my_key: my_value}
will parse as an object with a keymy_key
whose value ismy_value
{my_key:my_value}
will parse as an object with a keymy_key:value
whose value isnull
Command strings will be terminated with CR
and LF
ASCII characters. The length of the command strings should be less then 2KB. Commands that exceed the 2KB size limit are not forwarded out of the networking layer. They’re simply discarded and the connection is closed.
...
Structure |
| ||
---|---|---|---|
Argument Description |
| ||
Function Description | If a robot error/fault state occurs for one of the robots in the currently loaded deconfliction group, the Realtime Controller will enter a fault state. Examples of reasons may be: lost connection to a robot due to an E-stop, or the robot entering a fault state due to excessive speed or force. The ClearFaults command will attempt to recover any faults that the OEM controller allows allows to be cleared programmatically, and transition the Controller back into Config mode if possible. It will fail if there are still active, unresolvable faults. If | ||
Response Details | This command will return a single response code as a result value. | ||
Example Request |
| ||
Example Responses |
|
...
Structure |
| ||
---|---|---|---|
Argument Description |
| ||
Function Description | This function loads an RPC project. A load result will be returned once the process has finished and then RapidPlan will be in configuration mode. | ||
Response Details | This command will return a response code to acknowledge the command has been received.
| ||
Delayed Response Details | Once the load is completed, the system will send a delayed response to indicate the project has finished loading.
| ||
Example Request |
| ||
Example YAML Responses |
| ||
Example CSV Responses |
|
...
Structure |
| ||||
---|---|---|---|---|---|
Argument Description |
| ||||
Function Description | This command is used to define which project is the Default project that will automatically be loaded when RapidPlan powers on or is otherwise not in Operation Mode. Sending a SetDefaultProject command without specifying the | ||||
Response Details | This command will return a response to acknowledge the command has been received and executed successfully. | ||||
Example Request |
or
| ||||
Example YAML Responses |
| ||||
Example CSV Responses |
|
...
Structure |
| ||
---|---|---|---|
Argument Description |
| ||
Function Description | This command indicates that the project is ready to begin operation. This call is blocking, until all active robots have been connected. Once all participating robots have indicated readiness, return messages will be sent, and subsequent Move calls will be accepted. | ||
Response Details | This command will return a response to acknowledge the command has been received and executed successfully. | ||
Example Request |
| ||
Example YAML Responses |
| ||
Example CSV Responses |
|
...
Structure |
| ||
---|---|---|---|
Argument Description |
| ||
Function Description | This command will re-activate a robot. After this command, when Connect is called, the activated robot will be connected to, and when in OPERATION mode this robot will be controlled by RTR. | ||
Response Details | This command will return a response to acknowledge the command has been received and executed successfully. | ||
Example Request |
| ||
Example YAML Response |
| ||
Example CSV Response |
|
...
Structure |
| ||
---|---|---|---|
Argument Description |
| ||
Function Description | This command ‘deactivates’ a robot which means the RTR controller will ignore it when connecting to the robots within a project. Subsequent | ||
Response Details | This command will return a response to acknowledge the command has been received and executed successfully. | ||
Example Request |
| ||
Example YAML Response |
| ||
Example CSV Response |
|
...
Structure |
| ||
---|---|---|---|
Argument Description |
| ||
Function Description | This command is used to enable and set the alternate location for a robot. With this feature enabled, in the event a Move command fails or is interrupted, the Realtime Controller will not return a response code immediately, and will instead automatically plan to the specified alternate position. Depending on the behavior of complete move the Realtime Controller will either return a response Error code indicating the robot reached the alternate location, or continue to plan to the location that was first specified in the move command. | ||
Response Details | This command will return a response to acknowledge the command has been received and executed successfully. | ||
Example Request |
| ||
Example Responses |
| ||
Example CSV Responses |
|
...
Structure |
| ||||
---|---|---|---|---|---|
Argument Description |
A
If a robot's external axes remain fixed during a move, or switch to different setpoint values defined by a target,
Robot pose value plus
| ||||
Function Description | With this new generic A A A | ||||
Response Details | When a Move request is received, path planning occurs before a response is sent. If a path is found, this command will return a response code to acknowledge the command has been received, the name of the robot that this move is for, and a unique sequence ID for this specific move. If planning fails, an appropriate error code will be returned, and no delayed response will be sent.
| ||||
Delayed Response Details | If a path was found, the system will send a
or, for a
| ||||
Example Request |
| ||||
Example YAML Responses |
| ||||
Example CSV Responses |
|
...
Structure |
| ||
---|---|---|---|
Argument Description |
| ||
Function Description | This function tells the Realtime Controller to abort planning and motion for the specified robot. After calling this, a robot may be left in an off roadmap location and will require a planning move command. If If a move is canceled mid-motion after a | ||
Response Details | This command will return a response to acknowledge the command has been received and executed successfully. | ||
Example Request |
| ||
Example YAML Responses |
| ||
Example CSV Responses |
|
...
Structure |
| ||
---|---|---|---|
Argument Description |
If
| ||
Function Description | This command updates the specified targets position to be at the specified robot TCP location in its current preset, or using an optional pose value. The target’s new position will be used for all assigned robots. A target’s position will only be updated, if all of its connections remain valid, otherwise the command fails and returns an error code Only one target can be updated at a time. While a target is updating, any subsequent UpdateTarget commands will be rejected. With the | ||
Response Details | This command will return an acknowledgement with a status code indicating the command was received and is being executed. | ||
Delayed Response Details | This command will also return a delayed response when the update has completed or failed. | ||
Example Request |
| ||
Example YAML Responses |
| ||
Example CSV Responses |
|
...
Structure |
| ||
---|---|---|---|
Argument Description |
| ||
Function Description | This command retrieves the current joint angles of a specified robot. If the robot has additional axes, they will be included sorted by their driver index. The values will be returned in the client’s units for both revolute and prismatic joints. | ||
Response Details | This command will return a response code, followed by the current joint angles in a comma separated array. This command will always include the robot axes, and by default will include the position of external axes if present. | ||
Example Request |
| ||
Example YAML Responses |
| ||
Example CSV Responses |
|
...