Table of Contents |
---|
Revisions
...
Table of Contents |
---|
Revisions
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 Commandcommand.
2023/06/13: (2.4) Added GetStatefulObjects Commandcommand.
2023/06/13: (2.4) Added GetUnits Command.
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 2.0 ASCII API re-implements commands from the 1.x.x version with simplifications, renaming, and overall improvements. Most importantly, the request syntax changed to inline YAML, so that in future 2.x.x versions more functionality can be added while maintaining backwards compatibility. The key value structure will also make messages more readable, and easier to format. Requests can be returned in the same inline YAML format, or the same CSV response type as 1.x.x. versions.
API Format
Syntax (Inline YAML 1.2 Spec)
...
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
2023/11/16: (2.5) Added a cautionary statement regarding mixing RTR-controlled moves with non-RTR stop commands.
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 2.0 ASCII API re-implements commands from the 1.x.x version with simplifications, renaming, and overall improvements. Most importantly, the request syntax changed to inline YAML, so that in future 2.x.x versions more functionality can be added while maintaining backwards compatibility. The key value structure will also make messages more readable, and easier to format. Requests can be returned in the same inline YAML format, or the same CSV response type as 1.x.x. versions.
API Format
Syntax (Inline YAML 1.2 Spec)
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.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
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.
Requests
Requests sent to the Realtime controller will be formatted according to the inline YAML spec. The function type is set by the topic
key and then arguments are passed as key value pairs.
...
id
:
Status | ||||
---|---|---|---|---|
|
id
for the message in order to easily match responses to requests. Any id
provided in the request, will be returned in the matching responses. The value can be either a string
or int
. Note: CSV response types omit this field since it is optional.Formation Rules
All requests made to the Realtime Controller adhere to the following formation rules:
The topic values are case insensitive.
Any required key must be 100% correct and contain a valid value, otherwise the request is rejected.
If an optional key is not specified (either because it was not provided or because the key was malformed) the default value for the key is used.
Any optional key that is provided must contain a correct and valid value, otherwise the request is rejected.
If irrelevant keys are passed (including malformed optional keys), they are ignored.
If a value is valid but out of a range that we specify, the request is rejected.
Strings may only contain: numbers, letters, hyphens, and underscores
Boolean Values
When an argument expects a boolean type, the acceptable values are integers or case insensitive strings.
...
n|N|no|No|NO|false|False|FALSE|off|Off|OFF
0
Responses
Responses can be returned in CSV format for easy parsing, or in YAML format for human readability and programming languages that support it. The CSV responses will follow a fixed order with no optional returns, and therefore are more limited than the YAML response type. For any complex types returned in YAML (like an array), the values will be broken out in the CSV response. See GetJointConfiguration
for an example.
...
A
Response
is always returned and it indicates if the request has executed successfully or not.Null values, such as null, ~, '' (empty string), Null, and NULL are interpreted as normal strings. If a user sets an API command argument with a null value, the value will be checked for validity against the target RapidPlan project or RapidPlan settings. If not found, these null values will be rejected by RapidPlan with a “xxxx_NOT_FOUND” error.
A
DelayedResponse
is returned for commands that take time to execute, like aMove
orLoadProject
. When aResponse
includes aseq
key, that indicates that aDelayedResponse
will be returned for that command. Both the immediate and delayed responses will have a globally unique sequence number (referred to asseq
) so that the delayed response can be matched to the command it is for.A
Feedback
response is returned when an intermediate event occurs before the completion of the command. For example, each move segment in aCombinedMove
command returns aFeedback
response to indicate its completion before theCombinedMove
completes and returns itsDelayedResponse
.
...
id
:
Status | ||||
---|---|---|---|---|
|
id
for the message in order to easily match responses to requests. If a client provided an id
, the same id
will be returned in the responses. Note: if the response type is CSV and a id
is provided in the request, it will be omitted in all responses due to the no optional returns rule.Stateful Commands
Commands can now be stateful. Before, a workstate had to be passed in every MOVE command, but now the workcell and robot presets are set, and then subsequent move commands use the active preset.
Commands Stored on Disk
Certain commands are now stored on disk, so when the project is unloaded and reloaded, they hold their previous state. This will reduce the amount of repetitive commands during integration and testing, while also resulting in more predictable behavior.
...
SetMaxLinearAcceleration
SetMaxLinearSpeed
SetAlternateLocation
SetInterruptBehavior
SetResponseType
SetUnits
Scene Modeling commands
Command Determinism
When API commands come from the same source, e.g. a single TCP socket, the API commands are processed in the order of when they are received. In a multi-robot cell, the execution of the API commands for each robot is ordered and deterministic when the response code is confirmed by the source before the next API command is sent.
When API commands come from multiple sources, the API commands are processed by a RTR controller without considering the order of the command execution between robots. As a result, the execution of the API commands between robots may become out of order, due to the timing of when each API command arrives from different sources. Therefore, if consistent API command ordering is required from multi sources, it is necessary for the command sources to synchronize with each other.
Default Units
Unless set by the SetUnits
command, all requests and responses with the Realtime Controller assume millimeters
for lengths and degrees
for angles.
Move Type and Target Type Support
API support for moves without using external_axes
argument:
| direct | roadmap | planning |
---|---|---|---|
target | >=2.2 | >=2.0 | >=2.0 |
config | >=2.3 | >=2.3 | Not supported |
pose | >=2.0 | >=2.0 | >=2.2 |
API support for moves using external_axes
argument:
| direct | roadmap | planning |
---|---|---|---|
target | N/A* | N/A* | N/A* |
config | N/A* | N/A* | N/A* |
pose | >=2.2 | >=2.2 | >=2.2 |
*In Rapidplan Create, targets and robot configurations are defined by full joint configuration of the robot, including external axes values.
API Endpoints - Project
SetResponseType
Structure |
| ||||||
---|---|---|---|---|---|---|---|
Argument Description |
| ||||||
Function Description | This command is used to set the response format of the TCP/IP communication with the Realtime Controller. The Realtime controller stores this response type for each client that is connected to it. This command should be called at the beginning of a program to indicate the format in which the responses should be sent. If this command is not sent, the default response type is yaml. If the As long as the IP address has at least one open connection, the settings will persist. | ||||||
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 |
|
GetUnits
Structure |
| ||
---|---|---|---|
Argument Description |
| ||
Function Description |
| ||
Response Details | This command will return a response to show the units used by the loaded project. | ||
Example Request |
| ||
Example YAML Responses |
| ||
Example CSV Responses |
|
SetUnits
Structure |
| ||||||
---|---|---|---|---|---|---|---|
Argument Description |
| ||||||
Function Description | This command is used to set the unit convention for API calls made to the Realtime controller. On first project load, the default units of If the As long as the IP address has at least one open connection, the settings will persist. | ||||||
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 |
|
GetMode
Structure |
| ||
---|---|---|---|
Argument Description | None | ||
Function Description | This command retrieves the current mode of the Realtime Controller. | ||
Response Details | This command will return a response code, followed by the current state of the system. The states of the system are: Config mode, Operation mode, Calibration mode and Fault mode. | ||
Example Request |
| ||
Example YAML Responses |
| ||
Example CSV Responses |
|
ClearFaults
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 |
|
LoadProject
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 |
|
GetLoadedProject
Structure |
| ||
---|---|---|---|
Argument Description | None | ||
Function Description | This command retrieves the currently loaded project on the Realtime Controller. If a project is not currently loaded, an error code will be returned | ||
Response Details | This command will return a response code, followed by the currently loaded project or an appropriate error code. | ||
Example Request |
| ||
Example YAML Responses |
| ||
Example CSV Responses |
|
UnloadProject
Structure |
| ||
---|---|---|---|
Argument Description |
| ||
Function Description | This command brings the Realtime Controller out of operation mode and unloads the project. Current motions will be cancelled, and no new motion requests will be accepted. Duplicate calls have no effect. Connection to robot controllers will be terminated. | ||
Response Details | This command will return a response to acknowledge the command has been received.
| ||
Example Request |
| ||
Example YAML Responses |
| ||
Example CSV Responses |
|
SetDefaultProject
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 |
|
EnterOperationMode
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 |
|
EnterConfigurationMode
Structure |
| ||
---|---|---|---|
Argument Description | None | ||
Function Description | This command brings the Realtime Controller out of operation mode back into Config Mode. Current motions will be cancelled, and no new motion requests will be accepted. Duplicate calls have no effect. Connection to robot controllers will be maintained when returning to | ||
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 |
|
Shutdown
Structure |
| ||
---|---|---|---|
Argument Description | None | ||
Function Description | This command issues an asynchronous system call, Between this call and the system shutting down, the appliance will be in a “Shutdown” state and refuse any further ASCII commands.
| ||
Response Details | This command will return a response to acknowledge the command has been received and queued for execution. | ||
Delayed Response Details | If the shutdown command fails during execution, a delayed response will be sent with the command’s error status. | ||
Example Request |
| ||
Example YAML Responses |
| ||
Example CSV Responses |
|
UserLog
Structure |
| ||
---|---|---|---|
Argument Description |
| ||
Function Description | This function allows the user to write a simple string to the RapidPlan logs. | ||
Response Details | This command will return immediately with a response indicating whether or not the string could be written to the log. | ||
Example Request |
| ||
Example YAML Responses |
| ||
Example CSV Responses |
|
BeginInterlockRecording
Structure |
| ||
---|---|---|---|
Argument Description |
| ||
Function Description | This command indicates to RTR that for the upcoming cycle, RTR should record motion data for interlock calculations. This command is only accepted in | ||
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 |
|
GenerateInterlockData
Structure |
| ||
---|---|---|---|
Argument Description |
| ||
Function Description | This command indicates to RTR to that the simulation tool wishes to retrieve the interlock data for the preceding cycle. This command is only accepted in | ||
Response Details | The response is a report of interlock data for each edge taken by a robot while interlock recording was active in YAML format. The report contains keys for each robot, and for each robot there is a key for every motion it takes.
| ||
Example Request |
| ||
Example YAML Response | For each robot, the information of the robot motion and interlock is returned.
| ||
Example CSV Response |
|
API Endpoints - Robot
ActivateRobots
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 |
|
DeactivateRobot
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 |
|
Connect
Structure |
| ||||||
---|---|---|---|---|---|---|---|
Argument Description |
| ||||||
Function Description | This command connects to all active robots in the loaded project, or optionally a single robot. After this command executes, the Realtime Controller will begin monitoring the position of the robot/s. This command should normally be called near the beginning of a robot program, before attempting to make any Move commands. If the robot/s have already been connected, this command will return successfully. | ||||||
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 |
|
Disconnect
Structure |
| ||||||
---|---|---|---|---|---|---|---|
Argument Description |
| ||||||
Function Description | This command disconnects from all robots in the project (unless a robot is specified) and returns them to the | ||||||
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 |
|
AcquireControl
Structure |
| ||||||
---|---|---|---|---|---|---|---|
Argument Description |
| ||||||
Function Description | This command allows the user to signal that they are done with an operation that required RTR to release external control of the robot, and the Realtime Controller should resume control, with the last active robot preset or a specified preset. | ||||||
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 |
|
ReleaseControl
Structure |
| ||||||
---|---|---|---|---|---|---|---|
Argument Description |
| ||||||
Function Description | This command is intended to enable the user to take temporary control of the robot to get/set IOs, or execute a portion of their robot program that is not suitable for RTR control at this point. This may be gluing, welding, or some other time-dependent, sensitive process. | ||||||
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 |
|
SetMaxLinearAcceleration
ℹ️ Note: This command will apply to both activated and deactivated robots. If sent to a deactivated robot, the settings will apply when reactivating the robot.
Structure |
| ||||||
---|---|---|---|---|---|---|---|
Argument Description |
max_accel is also provided, its value will be ignored, and the acceleration limits will be reset. | ||||||
Function Description | This command limits the linear acceleration of a robots TCP. A user can specify the max acceleration allowed for a robot using this command, or reset to the default value using the | ||||||
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 |
|
SetMaxLinearSpeed
ℹ️ Note: This command will apply to both activated and deactivated robots. If sent to a deactivated robot, the settings will apply when reactivating the robot.
Structure |
| ||||||
---|---|---|---|---|---|---|---|
Argument Description |
max_accel is also provided, its value will be ignored, and the acceleration limits will be reset. | ||||||
Function Description | This command limits the max linear speed of a specified robot. In following move commands, the speed parameter will move the robot at a percent of this specified speed. For example, if this command is called and A user can specify the max linear speed allowed for a robot using this command, or reset to the default value using the This command can only be sent when the specified robot is stationary, and all subsequent motions will adhere to the provided limit. | ||||||
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 |
|
SetAlternateLocation
ℹ️ Note: This command will apply to both activated and deactivated robots. If sent to a deactivated robot, the settings will apply when reactivating the robot.
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 |
|
SetInterruptBehavior
ℹ️ Note: This command will apply to both activated and deactivated robots. If sent to a deactivated robot, the settings will apply when reactivating the robot.
Structure |
| ||||||
---|---|---|---|---|---|---|---|
Argument Description |
| ||||||
Function Description | This function should be invoked towards the beginning of a robot program. It sets the behavior for the robot with respect to replanning and timeout behavior. This function must be called when a project is already loaded. If this function is not called, the default behavior for a project will be: | ||||||
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 |
|
SetRobotPreset
Structure |
| ||
---|---|---|---|
Argument Description |
| ||
Function Description | This command changes the active robot preset for a specific robot. When a preset is changed, current robot motions are not re-validated, but new Move commands will respect the new active preset. A robot must be stationary in order to call this command explicitly. SetRobotPreset commands will be rejected if sent between a user issuing move request to the RTR controller, and the final response being sent from the RTR controller to the user for a given bot . If a preset change is needed, it can be accomplished using the preset_name key within a queued move or combined move request. In the case of switching presets using the preset_name key, there is a requirement that changes in preset during queued moves or CombinedMoves must not change the TCP or the controllable axes. This requirement is in effect if there are any current motions that the user has issued to RTR, that RTR has not yet returned the final API response to the user. If the new preset has a different number of controlled axes than the current preset, ReleaseControl must be called for that robot prior to the SetRobotPreset command. Once the preset change has succeeded, AcquireControl can be called again. When called, the selected preset is stored to disk so upon project reload, the last active preset will be used. | ||
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 |
|
GetRobotPresets
Structure |
| ||
---|---|---|---|
Argument Description |
| ||
Function Description | This command will return a response with a comma separated array of the robot preset names ( | ||
Response Details |
For CSV responses, after the acknowledgement codes, i.e., | ||
Example Request |
| ||
Example YAML Responses |
| ||
Example CSV Responses |
|
Queueing Moves
Move commands can be sent to a robot before its current motion has finished. The new Move
request will be added to the queue for the specified robot to be executed as soon as its current motion finishes.
Only
Direct
andRoadmap
move types can be added to the queue.A maximum of 100 moves can be added to the queue.
If received in time, the robot will smooth its current motion into the next in the queue using its smoothing argument.
The move queue for a given robot is cleared when:
A Move fails
A Move is cancelled
While a robot is executing a motion, the next move in the queue is planned
A robot reserves the swept volume of its current motion and the next move in the queue.
A Move is only added to the queue, if a path could be found.
Initial responses will be sent for move requests when planning has finished.
Delayed responses will be sent when queued move segments terminate (due to completion, cancelling, or interruption).
Canceling a robot’s motion with
CancelMove
will clear the move queue and cancel all moves simultaneously. The delayed responses of these moves are not guaranteed to be in queue order.Queued motions will use the interrupt settings when planning in the background.
Queued motions will use the alternate location, if enabled.
A robot’s preset can be changed when Moves are queued. The number of controlled axes shall stay the same. The robot TCP could change when a robot’s preset switches in the queue.
It is highly recommended to include
preset_name
in every queued Move command in case a robot’s preset switches in the queue.Smoothing is supported in queued moves. If the new motion is received in time, the robot will use the current motions smoothing value to blend into the new motion.
Move
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
|
trigger
|
trigger
is an object with 3 fields: name
: Only one trigger can be included for each move command, or each move segment of a combined move command. The trigger should have a user defined, stateless, globally unique name, to identify the signal for the receiver of the trigger.output
: The trigger output should be configured during runtime as part of a move command, to turn on or off the output signal as an 1-shot event, until the signal is overridden by either another API command. If the output key is not specified, this trigger is disabled and triggertime
is ignored. Ifoutput
is specified, triggertime
must be defined and cannot be omitted.0
orfalse:
output is off1
ortrue:
output is on
time
: Specifies the timing of the output, i.e. the time before the target position is reached, or after the move has started. The unit is in seconds and whose absolute value must be greater than0.1
.time
must be a none-zero value, and should always be >= 0.1 or <= -0.1. The move command will return an error code if 0.1 <time
< 0.1.A positive value (
time
>=0.1) indicates the time after the move starts, ie., a "time-after trigger".A negative value (
time
<=-0.1) indicates the time before reaching the goal, ie., a “time-before trigger”.If
time
is longer than the actual move time, a time-after trigger will turn on when reaching the goal, a time-before trigger will turn on when the move starts. The MoveFeedback response message for the trigger will arrive before the MoveResult message for the move.If alternate location is used(
mode
=0 inSetAlternateLocation
), and ifcomplete_move
= true:Only time-after triggers will apply to the move to the alternate location, time-before triggers will take no effect.
Only time-before triggers will apply to the move to the goal, time-after triggers will take no effect.
If alternate location is used(
mode
=0 inSetAlternateLocation
), and ifcomplete_move
= false:Only time-after triggers will apply to the move to the alternate location, time-before triggers will take no effect.
A trigger will not be re-activated if a Move command is issued when the robot is already at the goal position.
Function Description
With this new generic Move
command and the key value syntax, you can specify any of the former Blind Moves, MoveToXXX, and OffroadtoXXX commands with this one command.
A direct
move moves the robot directly from its current position to its goal position with a given interpolation type. This command is efficient, but can easily be blocked by other robots. It is very useful for final motions, especially if collision checking needs to be disabled.
A roadmap
move will follow the edges defined in the RPC project. This is expected to be the most common move type since the robots will use the roadmap to dynamically avoid obstacles. If pose is specified, and there is no target in the roadmap as that pose, the robot will leave the roadmap to reach the actual pose. The offroadmap portion will be collision checked, and will use the interpolation type specified (or joint interpolation by default).
A planning
move calculates a path for the robot at runtime to reach the goal. This is primarily used to put a robot on the roadmap in the beginning of a task. When called, the requested robot must not be executing any current requests, otherwise it will immediately return an error. If any other robots are currently executing move requests when a planning move request is called, the robot attempting the planning move will be blocked with an Error code. If no collision free path to the goal can be found, the server will return an error by the end of the given timeout period.
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.
Code Block |
---|
{topic: Move,type: Response,data: {robot_name: <value>,seq: <value>}} |
Delayed Response Details
If a path was found, the system will send a MoveResult
message along with a response code to indicate when the move completes. The name of the robot that the move was for, and the unique sequence ID for that move will be returned in the message. If the move is interrupted, the delayed response will contain an appropriate error code.
Code Block |
---|
{topic: Move,type: DelayedResponse,data: {robot_name: <value>,seq: <value>}} |
or, for a trigger
a feedback response will be sent to indicate that trigger output
is activated to on, or off. The trigger feedback responses will include the same seq
as the Move
it is a part of.
Code Block |
---|
{topic: Move,type: Feedback, data: {robot_name: <value>,seq: <value>, trigger: {name: <value>, output: <value>}}} |
Example Request
Code Block |
---|
{topic: Move,data: {robot_name: robot_1,move_type: roadmap,target: pre_pick,speed: 1.0,smoothing: 1, trigger: {name: output_1, output: 1, time: -0.5}}} |
Example YAML Responses
for planning moves only, this argument defines an array of user specified orientation constraints that only allow the TCP to rotate along certain axes but not the others between targets.
| |||||
Function Description | With this new generic A A A Caution: There are risks involved with mixing RTR moves with non -RTR moves(for example, native moves from a robot teach pendant program). The user must make sure that a RTR Caution: There are collision risks involved with stopping a robot from a robot teach pendant program when multi-robot moves are controlled by a RapidPlan controller. The user must make sure that all RTR | ||||
---|---|---|---|---|---|
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 |
|
CombinedMove
Structure |
| ||||||
---|---|---|---|---|---|---|---|
Argument Description |
SetRobotPreset before the combined move. The robot TCP or the number of controlled axes can not change when the preset switches.HoldMove is also able to be sent as a segment of a CombinedMove command. | ||||||
Function Description |
The smoothing argument of each individual move command will specify if it will blend into the next move in the list, and at what distance from the end of the current move. In the event a If move queuing is being used, a HoldMove is also able to be sent as a segment of a CombinedMove command to hold before executing a section of movement until a ResumeMove command has been sent. | ||||||
Response Details | This command will return an initial response to indicate that the command has been processed and a collision free path has been found for all moves, smoothing included. A unique sequence number will be included to identify the
| ||||||
Delayed Response Details | For every If a trigger output is specified for a move segment, a feedback message will be sent as soon as the trigger output is activated to on or off. Different segments of the same
| ||||||
Example Request |
Note: the new line (\n) and tab (\t) characters have been added for readability, the actual request format does not include them. CombinedMove (including a HoldMove segment): | ||||||
Example YAML Responses |
| ||||||
Example CSV Responses |
|
CancelMove
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 |
|
---|
Move,0,robot_1,312
... move executes ...
MoveFeedback,0,robot_1,312,Output_1,1
... 0.5s
MoveResult,0,robot_1,312
...
|
HoldMove
Structure |
|
---|
|
Argument Description
robot_name
: The robot that this combined move is for. A combined move, can only included motions for one robot, and therefoer the robot_name
key from the individual move commands can be omitted. If the robot_name
is included in the individual Move
commands, it will be ignored.
moves
: An array of up to 10 Move commands to be concatenated together. The move commands can only be direct
or roadmap
move types, and must adhere to the Move
command specification. However, redundant keys from the Move
command can optionally be omitted, since they are arguments of the CombinedMove
.
preset_name
:
Status | ||||
---|---|---|---|---|
|
SetRobotPreset
before the combined move. This argument provides the default preset which is used for all move segments. If this argument is not included, then each move segment in the move array must specify the preset that should be used for that move segment. Each move can use a different preset provided the TCP or number of controlled axes do not change.Function Description
CombinedMove
allows multiple move commands to be executed as if it was one motion, and the individual segments can optionally be blended together to maintain a higher velocity.
The smoothing argument of each individual move command will specify if it will blend into the next move in the list, and at what distance from the end of the current move.
In the event a CombinedMove
is interrupted, an error will be returned in the delayed response. In order to resume the CombinedMove
from its current position, it is expected that the user maintains a list of the completed individual moves and then send a new CombinedMove
with the moves that didn’t complete.
If move queuing is being used, a CombinedMove
can be added to the queue just like any other move.
Response Details
| |
Argument Description |
|
---|---|
Function Description | This command blocks a robot from executing pre-sent or combined moves for a defined robot until a ResumeMove command is sent. HoldMove is also able to be sent as a segment of a CombinedMove command. |
Response Details | A robot that is holding will return an error while holding. |
Example Request | HoldMove: CombinedMove (including a blocked segment): |
Example YAML Responses | HoldMove: |
Example CSV Responses | HoldMove: |
ResumeMove
Structure |
| ||
---|---|---|---|
Argument Description |
| ||
Function Description | ResumeMove: This command continues robot the through combined or pre-set moves for a defined robot. | ||
Response Details | |||
Example Request | ResumeMove: | ||
Example YAML Responses | ResumeMove: | ||
Example CSV Responses | ResumeMove: |
MultiRobotMove
Structure |
| ||
---|---|---|---|
Argument Description |
For now, MultiRobotMoves only support moves of type | ||
Function Description |
| ||
Response Details | The command will return an initial response to indicate that the command has been processed and a collision free path has been found |
. A unique sequence number will be included to identify |
CombinedMove
responses. When a move in the sequence is completed, a Feedback response will be returned, and upon completion of the full move sequence, additionally a DelayedResponse will be sendthe
|
|
|
| |
Delayed Response Details | For every |
---|
CombinedMove
a feedback response will be sent to indicate that segment has completed. The feedback responses will include the same seq
as the CombinedMove
they are a part of, as well as a zero index index
key to identify which segment the move result is for.If a trigger output is specified for a move segment, a feedback message will be sent as soon as the trigger output is activated to on or off. Different segments of the same CombinedMove
command are allowed to re-use the same trigger name, if the same trigger needs to be updated for each move segment. The feedback message contains the seq
value but no index
value in the
|
|
|
|
|
|
|
|
| |||
Example Request |
|
---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Note: the new line (\n) and tab (\t) characters have been added for readability, the actual request format does not include them.
Example YAML Responses |
|
---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |||
Example CSV Responses |
|
---|
Example CSV Responses
Code Block |
---|
CombinedMove,0,Robot1,61
CombinedMoveFeedback,0,Robot1,61,0
CombinedMoveFeedback,0,robot_1,61,output_1,1
CombinedMoveFeedback,0,Robot1,61,1
CombinedMoveFeedback,0,robot_1,61,output_1,0
CombinedMoveFeedback,0,Robot1,61,2
CombinedMoveResult,0,Robot1,61 |
CancelMove
Structure
Code Block |
---|
{topic: CancelMove,data: {robot_name: <value>, acceleration_factor: <value>}} |
Argument Description
robot_name
: The name of the robot for which a move is being canceled.acceleration_factor
[ OPTIONAL ] : The acceleration factor at which the robot will move on a scale from 0.5(50%) to 1.0(100%), when the move is being canceled. The default value is 0.8.
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.
This command is only accepted when the RTR Controller is in OPERATION
mode.
If a series of Move
commands are queued for the robot in question, they will all be canceled simultaneously. The delayed responses of these commands are not guaranteed to be in queue order.
If CancelMove
is called before planning is finished for a Move
command, robot preset of the canceled move will still be applied because the preset had changed before planning started.
If a move is canceled mid-motion after a Move
command which also sets the robot preset, the robot preset will be maintained.|
Response Details
This command will return a response to acknowledge the command has been received and executed successfully.
Example Request
Code Block |
---|
{topic: CancelMove,data: {robot_name: robot_1, acceleration_factor: 0.9}} |
Example YAML Responses
Code Block |
---|
{topic: CancelMove,type: Response} |
Example CSV Responses
| |||
Example Task Planner integration | The following example shows how MultiRobotMove can be used to resolve a deadlock at runtime. In the case of a deadlock, normal Move commands will return failure. Using MultiRobotMove combining the targets of the deadlocked robots will resolve the deadlock and move the robots to their targets.
|
---|
GetTargets
Structure |
| ||||||
---|---|---|---|---|---|---|---|
Argument Description |
| ||||||
Function Description | This command retrieves the targets for a given robot in a specific preset in the loaded project. The default behavior is to return the targets in the active robot preset, but a different preset can be specified. | ||||||
Response Details | This command will return a response code, followed by a comma separated array of the target names. | ||||||
Example Request |
| ||||||
Example YAML Responses |
| ||||||
Example CSV Responses |
|
CreateTarget
Structure |
| ||
---|---|---|---|
Argument Description |
| ||
Function Description | This command creates a target in the active robot preset for the specified robot. The target is created using the robot’s current joint angles. To ensure consistent joint angle readings, the robot must stay stationary while the target is created. Therefore, the controller must be in No connections will be created automatically for the new target. | ||
Response Details | This command will return an acknowledgement with a status code indicating the command was received and executed. | ||
Example Request |
| ||
Example YAML Responses |
| ||
Example CSV Responses |
|
UpdateTarget
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 |
|
RenameTarget
Structure |
| ||
---|---|---|---|
Argument Description |
| ||
Function Description | This command renames a target. To rename a target, the Realtime Controller must be in RapidPlan Create naming conventions must be followed. Duplicate names are not allowed. Any invalid names will be rejected by the command. | ||
Response Details | This command will return an acknowledgement with a status code indicating the command was received and executed. | ||
Example Request |
| ||
Example YAML Responses |
| ||
Example CSV Responses |
|
RemoveTarget
Structure |
| ||
---|---|---|---|
Argument Description |
| ||
Function Description | This command removes a target in the active robot preset for the specified robot. To remove the target, Realtime Controller must be in Removing the target will remove any manually created connections , and any connections created by auto-connect, between this target and other targets. | ||
Response Details | This command will return an acknowledgement with a status code indicating the command was received and executed. | ||
Example Request |
| ||
Example YAML Responses |
| ||
Example CSV Responses |
|
AddConnection
Structure |
| ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Argument Description |
type is set to auto (2 ), autoconnect_name can be specified by the user. If unspecified, a default autoconnect name will be assigned.
| ||||||||||||||||||
Function Description | This command creates new connections within a given roadmap. It can be used to create manual connections or auto-connects. | ||||||||||||||||||
Response Details | This command will return a response code. | ||||||||||||||||||
Delayed Response Details | This command will also return a delayed response only if | ||||||||||||||||||
Example Request |
| ||||||||||||||||||
Example YAML Responses |
| ||||||||||||||||||
Example CSV Responses |
|
RemoveConnection
Structure |
| ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Argument Description |
robot_name is used.
preset is ignored and not checked for validity. | ||||||||||||
Function Description | This command removes connections in the roadmap. It can remove manual connections between two targets or an auto-connect by name. It can only be run in CONFIG mode. | ||||||||||||
Response Details | This command will return a response code. | ||||||||||||
Example Request |
| ||||||||||||
Example YAML Responses |
| ||||||||||||
Example CSV Responses |
|
GetJointConfiguration
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 |
|
GetTCPPose
Structure |
| ||||||
---|---|---|---|---|---|---|---|
Argument Description |
world . The acceptable frames are:
| ||||||
Function Description | This command returns the specified robot’s TCP coordinates in the world or user specified frame for the active robot preset. The coordinates are returned in the client’s unit and rotation convention. | ||||||
Response Details | This command will return a response to acknowledge the command has been received and executed successfully along with the position and rotation of the specified robot’s TCP. | ||||||
Example Request |
| ||||||
Example YAML Responses |
| ||||||
Example CSV Responses |
|
API Endpoints - Scene Modeling
In addition to Static Scene Model command SetObjectState, there are Dynamic Scene Model (DSM) commands that allow a user to add obstacles at runtime. A user may need DSM feature if the size or location of the obstacles is unknown offline, and therefore cannot be modeled. A user may also use the DSM object if the number of obstacle variations is unrealistic to model (e.g. in palletizing there may be thousands of obstacle sizes and possible object states).
...
CAD objects must be configured in RapidPlan Create ahead of time to reference at runtime.
The DSM objects cannot be attached to stateful objects.
GetObjectStates
Structure |
| ||
---|---|---|---|
Argument Description |
| ||
Function Description | This command returns information about an object’s state for a loaded project. | ||
Response Details | This command will return a response with the object’s active state and a list of possible object states. | ||
Example Request |
| ||
Example YAML Responses |
| ||
Example CSV Responses |
|
GetStatefulObjects
Structure |
| ||
---|---|---|---|
Argument Description | None. | ||
Function Description | This command retrieves the stateful object names for the loaded project. | ||
Response Details | This command will return a response code, followed by a comma separated array of the object names. | ||
Example Request |
| ||
Example YAML Responses |
| ||
Example CSV Responses |
|
SetObjectState
Structure |
| ||
---|---|---|---|
Argument Description |
| ||
Function Description | This command changes the active state of a stateful mate. An object is specified as a function argument, and the direct parent’s mate state will be set based on the specified When called, the selected object state is stored to disk so upon project reload, the last active state will be used. | ||
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 |
|
GetFrames
Structure |
| ||
---|---|---|---|
Function Description | This command retrieves the frames added in RPC and the frames added by DSM commands for a loaded project that can be used as reference frames in | ||
Response Details | This command will return a response code, followed by a comma separated array of the frame names. | ||
Example Request |
| ||
Example YAML Responses |
| ||
Example CSV Responses |
|
AddFrame
Structure |
| ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Argument Description |
world frame. A parent frame must be static and not on a stateful object. Eg. a parent frame cannot be attached to a robot, or an object who’s parent mate has multiple states. | ||||||||||||
Function Description | This command adds a frame to the project. The frame is stored to disk, so when the project is unloaded, the frame will be saved. If the project is downloaded from the control panel and opened in RapidPlan Create, the frame will show up and be editable. The frame can be used as a reference/parent frame for:
| ||||||||||||
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 |
|
UpdateFrame
Structure |
| ||||||
---|---|---|---|---|---|---|---|
Argument Description |
Mutually exclusive keys:
pose or offset argument. The default value is world frame for a pose update. When offsetting a frame, the default is to reference itself. | ||||||
Function Description | This command updates the position of a frame and all of its children. A frame can be updated by applying an offset from its current position with the offset argument. A frame can also be relocated to a new position in a given frame. It is important to note that this cannot re-parent the frame. Frames can only be updated if they:
| ||||||
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 |
|
RemoveFrames
Structure |
| ||||||
---|---|---|---|---|---|---|---|
Argument Description |
| ||||||
Function Description | This command removes a specified frame/s added to the scene. When a frame is removed, any DSM boxes or objects with that frame as a parent will also be removed. If no arguments are passed, all frames will be removed, or an array of the frame names can be passed to selectively remove. | ||||||
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 |
|
AddBox
Structure |
| ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Argument Description |
world frame. A parent frame must be static and not on a stateful object. Eg. a parent frame cannot be attached to a robot, or an object who’s parent mate has multiple states.
| ||||||||||||
Function Description | This command adds a box into the Dynamic Scene Model. Once added, all robots in all robot presets will avoid it. Additionally, current robot motions will avoid the box when added. The box origin is at the corner which the size and offset arguments are relative to. The box has a fixed offset relative to the parent frame, and if the parent frame’s position is updated, the position of the box will be as well. The Dynamic Scene Model is not stored to disk, so when the Project is unloaded, the Dynamic Scene Model is reset. | ||||||||||||
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 |
|
AddObject
Structure |
| ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Argument Description |
world frame. A parent frame must be static and not on a stateful object. Eg. a parent frame cannot be attached to a robot, or an object who’s parent mate has multiple states.
| ||||||||||||
Function Description | This command adds a CAD object from the RPC project into the Dynamic Scene Model. Once added, all robots in all robot presets will avoid it. Additionally, current robot motions will avoid the box when added. The object has a fixed offset relative to the parent frame, and if the parent frame’s position is updated, the position of the object will be as well. The Dynamic Scene Model is not stored to disk, so when the Project is unloaded, the Dynamic Scene Model is reset. | ||||||||||||
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 |
|
RemoveBoxes
Structure |
| ||||||
---|---|---|---|---|---|---|---|
Argument Description |
| ||||||
Function Description | This command removes a specified box/es from the Dynamic Scene Model. If no arguments are passed, all boxes will be removed, or an array of the box names can be passed to selectively remove. | ||||||
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 |
|
RemoveObjects
Structure |
| ||||||
---|---|---|---|---|---|---|---|
Argument Description |
object that will be removed. | ||||||
Function Description | This command removes a specified object from the Dynamic Scene Model. If no arguments are passed, all objects will be removed, or an array of the box names can be passed to selectively remove. | ||||||
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 |
|
Reparent
Structure |
| ||
---|---|---|---|
Argument Description |
| ||
Function Description | This command will re-assign the parent frame for a specified DSM box. After this command executes, the box will have a new parent frame with an offset such that it remains in its current position. If the box’s new parent frame is moved, the box will move with it with that offset. A box’s parent frame can also be the TCP of a robot, and as the robot moves, the box moves with it maintaining the initial offset. A robot’s default TCP should be used that way it is independent of presets. A robot’s default TCP can be specified as {robot_name}_default_tcp. In order to assign a robot’s tcp as the parent of a box, the robot must be stationary. | ||
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 |
|
API Endpoints - Robot + Scene Modeling
SetWorkcellState
Structure |
|
---|---|
Argument Description |
robot_name
|
object_name
| ||||||
Function Description | This command changes the entire workcell preset for the loaded project with a combination of robot presets and object states. The combination can contain all robot presets and object states or a partial list. | |||||
---|---|---|---|---|---|---|
Response Details | This command will return a response to acknowledge the command has executed successfully. | |||||
Example Request |
|
|
|
|
| |||
Example YAML Responses |
| ||
---|---|---|---|
Example CSV Responses |
|