Get desktop application:
View/edit binary Protocol Buffers messages
The MissionService can be used to specify high level autonomous behaviors for Spot using behavior trees.
RPCs for loading missions to the robot. NOTE: LoadMission and LoadMissionAsChunks may fail for large missions because the request and response may exceed the maximum message size. Use LoadMissionAsChunks2 instead.
The LoadMission request specifies a root node for the mission that should be used.
Common request header.
Root node of the mission to load.
Leases that will be needed to validate the mission.
This RPC may be deprecated in the future, please use LoadMissionAsChunks2 instead. Non-preferred method for loading large missions to the robot because only the request is a streaming RPC. The data chunks are deserialized into a LoadMissionRequest. NOTE: LoadMissionAsChunks may fail for large missions because the response may exceed the maximum message size.
Preferred RPC for loading large missions to the robot because both the request and response are streaming RPCs, allowing you to break the message up into multiple streamed messages. The data chunks are deserialized into a LoadMissionRequest and LoadMissionResponse.
Start executing a loaded mission. Will not restart a mission that has run to completion. Use RestartMission to do that.
A request to play the currently loaded mission for a fixed amount of time.
Common request header.
Run the mission until this time. Pause the mission at that time if we have not received a new PlayMissionRequest. This ensures the mission stops relatively quickly if there is an unexpected client drop-out. Clients should regularly send PlayMissionRequests with a pause_time that reflects how often they expect to check in with the mission service.
Leases that the mission will need, plus the lease on the mission service.
Settings active until the next PlayMission or RestartMission request.
The PlayMission response message will return the status of the play mission request.
Common response header.
The result of the play request.
Results from any leases that may have been provided with the play request.
Pause mission execution.
The PauseMission request message will pause the mission that is currently executing, if there is one.
Common request header.
Lease on the mission service.
The PauseMission response message will return the status of the request.
Common response header.
Result of the pause request.
Result of the lease in the pause request.
Stop a running mission. Must use RestartMission, not PlayMission, to begin from the beginning.
The StopMission request message will fully stop the mission.
Common request header.
Lease on the mission service.
The StopMission response message will return the status of the request.
Common response header.
Result of the stop request.
Result of the lease in the stop request.
Start executing a loaded mission from the beginning. Does not need to be called after LoadMission.
A request to restart the currently loaded mission.
Common request header.
Run the mission until this time. Pause the mission at that time if we have not received a new PlayMissionRequest. This ensures the mission stops relatively quickly if there is an unexpected client drop-out. Clients should regularly send PlayMissionRequests with a pause_time that reflects how often they expect to check in with the mission service.
Leases that the mission will need, plus the lease on the mission service.
Settings active until the next PlayMission or RestartMission request.
The RestartMission response includes the status and any failed nodes for the request.
Common response header.
The result of the restart request.
Results from any leases that may have been used. As part of mission validation, some of the non-mission leases may have been used.
If certain nodes failed validation, they will be reported back in this field.
Get the state of the mission.
Get the state of the mission.
Common request header.
Upper bound on the node state to retrieve, inclusive. Leave unset for the latest data.
Specify the lower bound of per-node state history to retrieve. The service may not remember all the state you ask for. In this case, all of the state available between the specified bounds will be returned. This is optional -- if left unset, you will get exactly one set of per-node state.
Tick counter for the lower bound of per-node state to retrieve.
Number of ticks to look into the past from the upper bound.
Response to a GetStateRequest.
Common response header.
The requested mission state.
RPCs for getting static information regarding the mission. Used to interpret mission state. NOTE: GetInfo may fail for large missions because the response may exceed the maximum message size. Use GetInfoAsChunks instead.
Provides the currently loaded mission's information.
Common response header.
Description of the loaded mission's structure. Unset if no mission has been successfully loaded.
Preferred RPC for getting the status of large missions from the robot because the response is a streaming streaming RPC, allowing you to break the message up into multiple streamed messages. THe data chunks are deserialized into a GetInfoResponse.
Download the mission as it was uploaded to the service.
Responding with the mission as it was loaded in LoadMission.
Common response header.
Root node of the mission loaded. Unset if no mission has been loaded.
Mission ID as reported in MissionInfo. -1 if no mission has been loaded.
Alternative method to download large missions that allows you to break the mission up into multiple streamed requests. Each data chunk message should be deserialized as a GetMissionResponse protobuf message.
Specify an answer to the question asked by the mission.
Answer one of the outstanding questions.
Common request header.
Identifier of the question being answered.
The answer_code from the Question corresponding to the user's choice.
The answers for the Question corresponding to custom_params specification from the Question.
Response from the server after a client has answered one of its questions.
Common response header.
The result of the AnswerQuestionRequest.
Filled out if status is STATUS_CUSTOM_PARAMS_ERROR.
Interface for mission callbacks. Mission RemoteGrpc nodes will act as clients to this service type, calling out to this service when loaded, ticked, or unloaded.
Call this once at mission load time, once for each node that references this remote service.
Information to initialize a session to the remote service for a particular mission node.
Common request header.
All leases that the remote service may need.
Use this to provide other data (e.g. from the blackboard). The RemoteGrpc node will provide the name of the node automatically. DEPRECATED as of 3.3. Please use 'params' in [TickRequest] instead.
Provide the id to use for the particular mission node to tick this remote service.
Common response header.
Result of this establish session request.
On success, contains an ID for this session.
Need to provide leases on these resources.
Details about how any leases were used. Allowed to be empty, if leases were not actually used.
The inputs required by the contacted node that were not mentioned in the request. DEPRECATED as of 3.3. Please use 'params_error' instead.
Call this every time the RemoteGrpc node is ticked.
Request that the remote tick itself for a particular node in the mission.
Common request header.
Session ID as returned by the EstablishSessionResponse. Used to guarantee coherence between a single client and a servicer.
All leases that the remote service may need.
Inputs provided to the servicer. DEPRECATED as of 3.3. Please use 'params' instead.
Parameters set by the client. Depending on the structure of the mission, the value may change during ticking.
Callbacks can be used to record data using Data Acquisition. The mission can provide a hint to the callback with the current group, so that the data the callback saves is correctly grouped with other data generated by the mission. The value may change during ticking.
Response with the results of the tick. Remote services should strive to return quickly, even if only returning RUNNING.
Common response header.
Result of the current tick.
Need to provide leases on these resources.
Details about how any leases were used. Allowed to be empty, if leases were not actually used.
Filled out when status is STATUS_MISSING_INPUTS, indicating what inputs were not in the request.
If you need to report other error details, you can use this field.
Filled out if status is STATUS_CUSTOM_PARAMS_ERROR.
Call this every time the RemoteGrpc node WAS ticked in the previous cycle, but was NOT ticked in this cycle. Signals that the next tick will be a restart, rather than a continuation.
Used to stop a node that was previously ticked, so that it knows that the next Tick represents a restart rather than a continuation.
Common request header.
Session ID as returned by the EstablishSessionResponse. Used to guarantee coherence between a single client and a servicer.
Results of attempting to stop a remote node.
Common response header.
Result of the stop request.
Tells the service it can forget any data associated with the given session ID. Should be called once for every EstablishSession call.
End the session originally established by an EstablishSessionRequest.
Common request header.
Session ID as returned by the EstablishSessionResponse. Used to guarantee coherence between a single client and a servicer.
Results of ending a session.
Common response header.
The result of a TeardownSessionRequest.
Asks the service what to describe itself Can be called by clients at mission record time to parameterize a RemoteGrpc node.
Common request header.
Common response header.
The parameters the service expects to be called at runtime with.
Possible results for answering a question.
Used in:
Invalid; do not use.
Answer accepted.
Question ID is not valid / unknown by the mission service.
Answer code is not applicable for the question indicated.
Question was already answered.
One or more keys or values in custom_params are unsupported by the question. See the custom_param_error for details.
Answer format is not applicable for the question indicated.
Get the state of the docking service from the robot.
Used in:
Name of the service to use.
Host machine the service is running on.
Child node. Children will have access to the state gathered by this node.
Name of the bosdyn.api.DockState object in the blackboard. For example, if this is set to "power_status", children can look up "power_status" in the blackboard.
Tell GraphNav to re-localize the robot using a SetLocalizationRequest. This overrides whatever the current localization is. This can be useful to reinitialize the system at a known state.
Used in:
Name of the service to use.
Host machine the service is running on.
If no localization_request is provided, the default options used are FIDUCIAL_INIT_NEAREST (the system will initialize to the nearest fiducial). Otherwise, the options inside the set_localization_request will be used. Note that ko_tform_body in the request will be ignored (it will be recalculated at runtime).
If true, a poor quality check will not result in the node returning FAILURE. If false, the localization will be checked for quality by comparing against the map data, and if the localization is poor quality, the node returns FAILURE.
If non-empty, the blackboard variable with this name will contain the response of the graph nav SetLocalization request after this node receives it.
If specified, the value of this blackboard variable will be merged with the localization_request. The value of this variable must be a bosdyn.api.graph_nav.SetLocalizationRequest proto.
Get GraphNav state from the robot and save it to the blackboard.
Used in:
Name of the service to use.
Host machine the service is running on.
Child node. Children will have access to the state gathered by this node.
Name of the bosdyn.api.GetLocalizationStateResponse object in the blackboard. For example, if this is set to "nav", children can look up "nav.localization.waypoint_id" in the blackboard to get the waypoint the robot is localized to.
Id of the waypoint that we want the localization to be relative to. If this is empty, the localization will be relative to the waypoint that the robot is currently localized to.
Get the state of the gripper camera params from the robot.
Used in:
Name of the service to use.
Host machine the service is running on.
Child node. Children will have access to the state gathered by this node.
Name of the bosdyn.api.GripperCameraParams object in the blackboard. For example, if this is set to "gripper_params", children can look up "gripper_params.camera_mode" in the blackboard.
Tell the robot to navigate a route.
Used in:
Name of the service to use.
Host machine the service is running on.
A route for the robot to follow.
What should the robot do if it is not at the expected point in the route, or the route is blocked.
Parameters that define how to traverse and end the route.
If provided, this will write the last NavigationFeedbackResponse message to a blackboard variable with this name.
If provided, this will write the last NavigateRouteResponse message to a blackboard variable with this name.
If provided, parameters from this request will be merged with the other parameters defined in the node and be used in the NavigateRoute RPC.
Tell the robot to navigate to a waypoint.
Used in:
Name of the service to use.
Host machine the service is running on.
ID of the waypoint to go to.
Preferences on how to pick the route.
Parameters that define how to traverse and end the route.
If provided, this will write the last NavigationFeedbackResponse message to a blackboard variable with this name.
If provided, this will write the last NavigateToResponse message to a blackboard variable with this name.
Defines robot behavior when route is blocked. Defaults to reroute when route is blocked.
Make a robot power request
Used in:
Name of the service to use.
Host machine the service is running on.
The request to make. See the PowerCommandRequest documentation for details.
Write the QueryStoredCapturesResponse for a given QueryParameters message to the blackboard.
Used in:
Name of the service to use.
Host machine of the directory server that the data acquisition service is registered with.
The key of the variable that the QueryStoredCapturesResponse will be written to.
The QueryParameters message for the QueryStoredCapturesRequest that will be made.
If specified, these CaptureActionIds will be added to the QueryParameters at runtime.
Format strings that will be used together with the blackboard to generate a CaptureActionId.
Used in:
Record an APIEvent
Used in:
Name of the service to use.
Host machine the service is running on.
The event to be logged. Note that everything should be populated except the id, start_time and end_time. The start and end time will be populated by the mission, using the node's start time. The id field shouldn't be set when the start and end times are the same.
If set to false, this node will wait for the RecordEvents rpc to complete. If set to true, this node will send the RecordEventsRequest, and then return SUCCESS without waiting for the RecordEventsResponse.
In addition to the parameters specified in the event field, this field can be used to specify events only known at runtime. Map key will be parameter label, map value will be evaluated then packed into parameter value.
Execute a RobotCommand. These nodes will "succeed" once a feedback response is received indicating success. Any commands that require an "end time" will have that information set based on the end time of the mission.
Used in:
Name of the service to use.
Host machine the directory is running on.
The command to execute. See the RobotCommand documentation for details.
Get state from the robot.
Used in:
Name of the service to use.
Host machine the service is running on.
Child node. Children will have access to the state gathered by this node.
Name of the bosdyn.api.RobotState object in the blackboard. For example, if this is set to "robot", children can look up "robot.power_state.motor_power_state" in the blackboard.
This node will: 1. Check if there are behavior faults. If there are none, it will return success. 2. Check if all behavior faults are clearable. If not, it will return failure. 3. Try to clear the clearable behavior faults. If it cannot, it will return failure.
Used in:
Name of the service to use.
Host machine the service is running on.
Name of a robot state message defined in the blackboard. Usually provided by embedding this node in a [BosdynRobotState] node.
Optional blackboard variable name. If specified, this node will write the number of cleared behavior faults that had CAUSE_FALL.
Optional blackboard variable name. If specified, this node will write the number of cleared behavior faults that had CAUSE_HARDWARE.
Optional blackboard variable name. If specified, this node will write the number of cleared behavior faults that had CAUSE_LEASE_TIMEOUT.
Checks a simple comparison statement.
Used in:
Left-hand side of the comparison.
Right-hand side of the comparison.
Comparison operator to compare lhs and rhs.
Comparison operator.
Used in:
Invalid, do not use.
Equal.
Not equal.
Less than.
Greater than.
Less than or equal.
Greater than or equal.
When comparing runtime values in the blackboard, some values might be "stale" (i.e too old). This defines how the comparator should behave when a read value is stale.
Used in:
acts like READ_ANYWAY for backwards compatibility.
ignore how stale this data is.
return the RUNNING status until the data being read is not stale.
return FAILURE status if stale data is read.
Options for where to retrieve values from.
Used in:
Reference an existing variable.
Use a constant value.
Just returns a constant when calling tick().
Used in:
This result is always returned when calling tick().
A constant value. Corresponds to the VariableDeclaration Type enum.
Used in:
,Creates a message, puts it in the current tick state messages, then ticks the child node. The MissionText will remain active while the node is ticked and RUNNING. Clients can retrieve active mission text through the GetState RPC.
Used in:
The mission text to create. The mission text may contain blackboard variable formatting.
Severity level of the text message. Here are guidelines for severity as it pertains to missions: INFO: Normal operation. For example, waiting for charge; waiting on the dock for logs to download. WARN: Something went wrong, but the mission will try to recover autonomously. ERROR: Something went wrong, and the mission can't recover without human intervention. Intervention is not time sensitive and can be resolved when convenient. CRITICAL: Something went wrong, and the mission can't recover without human intervention. Human needs to rescue the robot before battery runs out because it's not charging.
Child to tick after creating the mission text The MissionText will be active as long as the child is ticked and RUNNING.
Trigger the acquisition and storage of data.
Used in:
,Name of the service to use.
Host machine of the directory server that the data acquisition service is registered with.
Specification of the data and metadata to store.
Define a format string that will be used together with the blackboard to generate a group_name. If a value is specified in this field, it will override the group_name value specified in the CaptureActionId of the AcquireDataRequest. Values from the blackboard will replace the keys in braces {}. Example: "teleop-{date}", where "date" is a blackboard variable. Example: "{date}_loop_{loop_counter}", where "loop_counter" is a blackboard variable from a Repeat node.
If populated, name of the variable in the blackboard in which to store the AcquireDataRequest after it's created, and sent to the Data Acquisition service.
The name of the metadata object in the blackboard to be stored. The metadata object can be any protobuf message. The metadata will be merged with the AcquireDataRequest's metadata field.
Define a format string that will be used together with the blackboard to generate an action_name. If a value is specified in this field, it will override the action_name value specified in the CaptureActionId of the AcquireDataRequest. Values from the blackboard will replace the keys in braces {}. Example: "element 0 attempt {loop_counter}", where "loop_counter" is a blackboard variable from a Retry.
If set to false (default), this node will cancel an outgoing AcquireDataRequest when the node is paused / stopped. When the node is resumed, it will restart the AcquireDataRequest. If set to true, this node will NOT cancel outgoing AcquireDataRequest's when the node is paused / stopped. When the node is resumed, it will check feedback on the original outgoing AcquireDataRequest.
If true, metadata string values may contain formatted blackboard variables. Please see the documentation in FormatBlackboard for more information about supported string formats.
Used in:
,Node is complete after all data has been saved.
Node is complete after all data is acquired, but before processing and storage. This allows the robot to continue on with the mission sooner, but it will be unaware of failures in processing or storage.
Send an AcquireDataRequest to the data acquisition service when the mission is interrupted. Interruptions are anything that causes the mission to stop ticking automatically.
Used in:
Child to run when node starts. If mission is interrupted while the child is still running, the mission service will send an AcquireDataRequest to the data acquisition service. The child will resume when the mission resumes. The DataAcquisitionOnInterruption node will always return the status of this child node.
Data acquisition request that will be sent if the mission is interrupted. This is not an actual node. It will only be used for the data acquisition request details. The completion_behavior, request_name_in_blackboard, metadata_name_in_blackboard, and format_metadata fields will not be used.
Interruption reason: PauseMission RPC called.
Interruption reason: RestartMission RPC called.
Interruption reason: LoadMission RPC called.
Interruption reason: StopMission RPC called.
Interruption reason: Lease use error occurred.
Interruption reason: Play mission timeout exceeded.
Interruption reason: Child node returned an error result.
Interruption reason: Child node threw an exception.
This is used if any of the above are empty or if an unexpected interruption occurs.
If key(s) are specified, the additional information about the lease use error will be stored in the AcquireDataRequest metadata. All given key(s) must be used in order to access the error message reason from the JSON metadata. The last key holds error message.
Record a datetime string into the blackboard. Writes the date according to ISO8601 format.
Used in:
The key of the variable that will be written.
Defines new blackboard variables within the scope of the child. Shadows blackboard variables in the parent scope.
Used in:
The list of variables that should be defined for this subtree, with initial values. Note: Currently the mission service supports blackboard variable keys that contain ".", "[]", and "()". In a future release, this will no longer be supported. Boston Dynamics recommends using letters, numbers, and underscores for blackboard keys.
The blackboard variables will only persist in the subtree defined by this child node. The child's tick() will be called on the child until it returns either SUCCESS or FAILURE.
Used in:
Name of the service to use.
Host machine of the directory server that the docking service is registered with.
ID of docking station to dock at.
Blackboard variable key that contains the docking station id.
Optional child node. Children will have access to the status variables gathered by this node. If specified, child node will determine success/failure of this node. DEPRECATED as of 3.0.0. Use docking_command_response_blackboard_key and docking_command_feedback_response_blackboard_key instead.
Name of the command status variable in the blackboard. This is the status of the docking command request made to the robot. Please refer to bosdyn.api.docking.DockingCommandResponse.Status for more details. Children can use this name to look up docking command status in the blackboard. If no name is provided, status will not be available. DEPRECATED as of 3.0.0. Use docking_command_response_blackboard_key and docking_command_feedback_response_blackboard_key instead.
Name of the feedback status variable in the blackboard. This is the feedback provided while docking is in progress. Please refer to bosdyn.api.docking.DockingCommandFeedbackResponse.Status for a list of possible status values. Children can use this name to look up docking status in the blackboard. If no name is provided, status will not be available. DEPRECATED as of 3.0.0. Use docking_command_response_blackboard_key and docking_command_feedback_response_blackboard_key instead.
Defines how we use the "pre-docking" behavior.
If provided, this will write the last DockingCommandFeedbackResponse message to a blackboard variable with this name.
If provided, this will write the last DockingCommandResponse message to a blackboard variable with this name.
Require the detection of the dock's fiducial
Possible results of establishing a session.
Used in:
Status unknown/unset.
Provided inputs / outputs are compatible.
Remote service needs leases on additional resources. If set, the missing_lease_resources field should contain the resources needed but not provided.
Remote service needs additional inputs.
Sends a request to play a choreography sequence with the given name, and then monitors the state of the dancing robot.
Used in:
Name of the service to use.
Host machine the service is running on.
The name of the sequence to play.
General message describing a node that has failed, for example as part of a PlayMission or LoadMission RPC.
Used in:
, ,Human-readable name of this node, e.g. "Goto waypoint 1", or "Power On".
The reason why this node failed. May not be provided by all nodes.
The type of node, e.g. "bosdyn.api.mission.Sequence". May not be provided by all nodes.
Run this child for a maximum amount of mission execution time. Will exit with child's status if the child finishes early, FAILURE if the child remains in RUNNING state for too long and no timeout_child is specified, or the status of the timeout_child.
Used in:
Maximum duration of mission execution time.
Blackboard variable name that specifies duration. The value of this variable should be of type google.protobuf.Duration.
Child to execute for the duration.
Optional blackboard variable name. If specified, this node will define a blackboard variable that its child has access to, and write the number of seconds remaining as a double to the blackboard under this name.
Optional node that will run if the child times out. If not specified, this node will return FAILURE when the child times out. If specified, and the child times out, this node will return the status of the timeout_child. The timeout_child does not respect the original timeout.
Sets a blackboard variable to a formatted string, reading from other blackboard vars.
Used in:
The key of the variable that will be written.
Define a format string that will be used together with the blackboard to generate string value. Values from the blackboard will replace the keys in braces {}, i.e. {blackboard_variable_name}. We also allow some string formatting options, namely: 1) Floating point decimal places: {float_variable:.2f} 2) TBD Select examples: Format String: "teleop-{date}" Blackboard: "date" is a blackboard variable with string value: "2021-05-13" Output: "teleop-2021-05-13" Format String: "{date}_loop_{loop_counter}" Blackboard: "date" is a blackboard variable with string value: "2021-05-13" Blackboard: "loop_counter" is a blackboard variable with integer value: "3" Output: "2021-05-13_loop_3" Format String: "battery charge is: {state.power_state.locomotion_charge_percentage.value}" Blackboard: "state" is a protobuf message in the blackboard from a BosdynRobotState, and the power_state submessage has a charge percentage of 30.2148320923085 Output: "battery charge is: 30.2158320923085" Format String: "battery charge is: {state.power_state.locomotion_charge_percentage.value:.2f}" Blackboard: "state" is a protobuf message in the blackboard from a BosdynRobotState, and the power_state submessage has a charge percentage of 30.2148320923085 Output: "battery charge is: 30.21" Format String: "the value is {x:.0f}" Blackboard: "x" is a blackboard variable with float value: "2.71828" Output: "the value is 3"
Request mission information. This covers information that stays static until a new mission is loaded.
Used as request type in: MissionService.GetInfo, MissionService.GetInfoAsChunks
Common request header.
For requesting the mission as it was loaded in LoadMission.
Used as request type in: MissionService.GetMission, MissionService.GetMissionAsChunks
Common request header.
Key/Value pair, used in other messages.
Used in:
, , , , , ,The LoadMission response returns the mission info generated by the service if successfully loaded, and a status and other information if the request fails.
Used as response type in: MissionService.LoadMission, MissionService.LoadMissionAsChunks
Common response header.
Result of loading the mission.
Results from any leases that may have been used. As part of mission validation, some of the non-mission leases may have been used.
Provides the structure of the mission. Set when loading succeeds.
If certain nodes failed compilation or validation, they will be reported back in this field.
Possible results of loading a mission.
Used in:
Invalid status, do not use.
The mission was loaded successfully.
Load-time compilation failed. The mission was malformed.
Load-time validation failed. Some part of the mission was unable to initialize.
Static information about the mission. Used to interpret the mission state.
Used in:
,Mission ID assigned by the server.
The root node of the mission.
Nodes can pass arbitrary text back through the mission state.
Used in:
The text of the message.
Severity level of the text message. Here are guidelines for severity as it pertains to missions: INFO: Normal operation. For example, waiting for charge; waiting on the dock for logs to download. WARN: Something went wrong, but the mission will try to recover autonomously. ERROR: Something went wrong, and the mission can't recover without human intervention. Intervention is not time sensitive and can be resolved when convenient. CRITICAL: Something went wrong, and the mission can't recover without human intervention. Human needs to rescue the robot before battery runs out because it's not charging.
The node which produced the update message.
Uploads the given set of animations and choreography sequences to the robot.
Used in:
Name of the service to use.
Host machine the service is running on.
Choreography sequences to be loaded (required by the mission).
Any animations we need to load if we want to play the sequences.
Wrapper for a mission node. Contains the basics common to all mission nodes. Specifics of what the node does are contained in the "impl" field.
Used in:
, , , , , , , , , , , , , , , , , , , , ,Human-readable name of this node, e.g. "Goto waypoint 1", or "Power On".
Collection of user data associated with this node.
Reference identifier of this node. Set iff another node references this one.
DEPRECATED as of 4.0. Implementation of this node. For example, this may be a Sequence.
Unique identifier of another node. If this is filled out, rather than the "impl", then the referenced node will be used in place of this one.
Defines parameters, used by this node or its children. The "key" in KeyValue is the name of the parameter being defined. The value can be a constant or another parameter value.
Overwrites a protobuf field in this node's implementation. The "key" in KeyValue is the name of the field to override. The value to write can be sourced from a constant, or a parameter value.
Declares parameters needed at compile time by this node, or children of this node. This is a way for a node to communicate what parameters its implementation and/or children require, without unpacking the entire subtree.
Provides children and metadata of a single node within the mission.
Used in:
Unique to each node within the LOADED mission. Not guaranteed to be consistent between loads of the same mission. Used to identify the nodes in the State message.
Human-readable name of this node, e.g. "Goto waypoint 1", or "Power On".
Any UserData that was associated with this node.
Info on all children of this node, if any are present.
Run many child nodes together, returning only after they have all completed or an early exit is triggered.
Used in:
Boolean to finish every child node. If this is false, if one of the nodes fails, the whole ParallelAnd will stop & return the failure immediately. If this is true, if one of the nodes fails, the ParallelAnd will continue to run until all the children have exited, then report the failure. If a node raises an error, the error will always be reported immediately. Default false.
Possible results of a pause request.
Used in:
Invalid status, do not use.
Mission is paused or finished running.
No mission has started playing. NOT returned when two PauseMissionRequests are received back-to-back. In that case, you will get STATUS_OK.
Possible results for a play request.
Used in:
Invalid status, do not use.
Mission is playing, or the mission has already completed. Use GetStateResponse to tell the difference.
Call LoadMission first.
"Global" settings to use while a mission is running. Some of these settings are not globally applicable. For example, the velocity_limit does not change the speed at which the robot poses the body.
Used in:
,Velocity limits on the robot motion. Example use: limit velocity in "navigate to" nodes.
Disable directed exploration to bypass blocked path sections
Disable alternate-route-finding; overrides the per-edge setting in the map.
Specifies whether to use default or strict path following mode.
Specify whether or not to enable ground clutter avoidance, and which type.
Specify the path planner mode.
Prompt the world at large to answer a question. This node represents a request for information from ANY listeners that may be out there.
Used in:
Should we always re-prompt when this node is started? If false, this node will only ever prompt if it is started and its question is unanswered. This may be used, for example, to ask the user to check the robot after any self-right. If true, this node will prompt whenever it is started. This may be used, for example, to tell the user to perform some one-time action, like open a door for the robot.
The text of the question itself. The question text may contain formatted blackboard variables. Please see the documentation in FormatBlackboard for more information about supported string formats.
Metadata describing the source of the question. The answer will be written into the state blackboard with this as the variable name.
The set of options that can be chosen for this prompt.
The set of options that can be chosen for this prompt.
Key to an OptionsList protobuf object on the blackboard. The variable is only read when the node starts meaning options cannot change while the node is running.
Custom parameter specification for the answer expected for this prompt.
Child node, run after the prompt has been responded to. Children will have access to the answer code provided by the response.
Hint that Question posed by this Prompt is meant to be answered by some automated system. See the Question message for details.
Severity for this prompt. Used to determine what sort of alerting this prompt will trigger. Here are guidelines for severity as it pertains to missions: INFO: Normal operation. For example, waiting for charge; waiting on the dock for logs to download. WARN: Something went wrong, but the mission will try to recover autonomously. ERROR: Something went wrong, and the mission can't recover without human intervention. Intervention is not time sensitive and can be resolved when convenient. CRITICAL: Something went wrong, and the mission can't recover without human intervention. Human needs to rescue the robot before battery runs out because it's not charging.
If specified, this node will read the severity out of the blackboard at the specified location.
If specified, this node will write its current question (bosdyn.api.mission.Question proto) to the blackboard while it is being ticked.
Data about the options to choose from.
Used in:
, ,Text associated with this option. Should be displayed to the user.
Numeric code corresponding to this option. Passed as part of the answer.
Used in:
A question posed by a Prompt node, or by the internal operation of another node.
Used in:
,Identifier of this question, unique across all missions executing on a single host.
What's asking the question. Should be unique in the active mission.
The text of the question itself.
Options to choose from. Uses the submessage from the "prompt" node message.
Custom parameter specification for the answer expected for this question.
Set to true if this question was meant to be answered by some automated system, not a human. Clients should usually avoid generating a UI element to ask such a question.
Severity for this question. See comment in Prompt message in nodes.proto for a better understanding of what levels mean.
Call out to another system using the RemoteMission service.
Used in:
Host that is running the directory server. Usually, this is just the robot.
Name of the service in the directory.
Timeout of any single RPC. If the timeout is exceeded, the RPC will fail. The mission service treats each failed RPC differently: - EstablishSession: An error is returned in LoadMission. - Tick: The RPC is retried. - Stop: The error is ignored, and the RPC is not retried. Omit for a default of 60 seconds.
Resources that we will need leases on.
The list of variables the remote host should receive. Variables given can be available at either run-time or compile-time. The "key" in KeyValue is the name of the variable as used by the remote system.
Define a format string that will be used together with the blackboard to generate a group_name. If a value is specified in this field, it will override the group_name value specified in the group_name of the TickRequest. Values from the blackboard will replace the keys in braces {}. Example: "teleop-{date}", where "date" is a blackboard variable. Example: "{date}_loop_{loop_counter}", where "loop_counter" is a blackboard variable from a Repeat node.
Should match the advertised spec for the RemoteMissionService in question.
Repeat a child node.
Used in:
Start the child node exactly this many times. Note that a value of 1 makes the Repeat node a no-op.
Child to repeat max_starts times.
If set, the node will write the start index to the blackboard.
If set to false, this repeat node will keep running its child regardless of whether or not the child succeeds or fails. If set to true, this repeat node will only keep running its child when the child succeeds. If the child fails, the repeat node will fail.
Possible results of requesting a restart.
Used in:
Invalid status, do not use.
Mission has restarted.
Call LoadMission first.
Validation failed.
This node will run and return the status of the child node. If the mission is paused while this node is executing, the child will be restarted when the mission is resumed.
Used in:
Results from executing / ticking / running a single node.
Used in:
,Invalid, should not be used.
The node completed running, but failed.
The node is still in process and has not completed.
The node completed, and succeeded.
The node encountered an operational error while trying to execute.
Send RetainLease for every Lease the mission service is given via PlayMissionRequest. Returns RUNNING while there are more leases to retain, SUCCESS once a lease for each resource has been retained, and FAILURE if any one lease cannot be retained.
Used in:
Name of the service to use.
Host machine of the directory server that the lease service is registered with.
Retry a child node until it succeeds, or exceeds a number of attempts.
Used in:
Only allow this many attempts. Note that a value of 1 makes this Retry node a no-op.
Child to retry up to max_attempts.
If set, the node will write the attempt index to the blackboard.
Run all children in order until a child succeeds.
Used in:
Forces the execution to always begin with the first child. If false, and the Selector ran last tick, it will continue with the node it was ticking.
List of all children to iterate through.
Run all children in order until a child fails.
Used in:
Forces the execution to always begin with the first child. If false, and the Sequence ran last tick, it will continue with the node it was ticking.
List of all children to iterate through.
Sets existing blackboard variables within this scope to specific values, returning SUCCESS.
Used in:
The key of the KeyValue is the name of the blackboard variable. The value will be dereferenced and converted into a value type at runtime inside this node's tick function. For example, if the value is a runtime variable, that variable will be evaluated at tick time, and then stored into the blackboard. If the value is another blackboard variable, that blackboard variable's value will be copied into the variable specified by the key. Note: Currently the mission service supports blackboard variable keys that contain ".", "[]", and "()". In a future release, this will no longer be supported. Boston Dynamics recommends using letters, numbers, and underscores for blackboard keys.
Set grasp override and carry state override requests
Used in:
Name of the service to use.
Host machine of the directory server that the gripper camera param service is registered with.
Set gripper camera params
Used in:
Name of the service to use.
Host machine of the directory server that the gripper camera param service is registered with.
Run two child nodes together, returning the primary child's result when it completes.
Used in:
Primary node, whose completion will end the execution of SimpleParallel. The secondary node will be ticked at least once.
Secondary node, which will be ticked as long as the primary is still running.
By default, if the secondary node finishes before the primary node, the secondary node will be restarted. If this flag is set to true, and the secondary node completes before the primary node, it will never be restarted.
When started, begins a sleep timer for X seconds. Returns "success" after the timer elapses, "running" otherwise.
Used in:
Number of seconds to sleep for.
Blackboard variable name that specifies duration. The value of this variable should be of type google.protobuf.Duration.
If this node is stopped, should it restart the timer?
Set the focus on the Spot CAM PTZ
Used in:
Name of the service to use.
Host machine of the directory server that the Spot CAM registered with.
Focus State to set the Spot CAM PTZ to, from SetPtzFocusStateRequest
Set the LEDs to a specified brightness
Used in:
Name of the service to use.
Host machine of the directory server that the Spot CAM registered with.
Brightnesses of the LEDs, from SetLEDBrightnessRequest
Point the PTZ to a specified orientation
Used in:
Name of the service to use.
Host machine of the directory server that the Spot CAM registered with.
The rest of the fields are from bosdyn.api.spot_cam.ptz.SetPtzPositionRequest, see that message for details.
Setting adjust_parameters will enable auto-adjusting the PTZ pan and tilt at playback time, based on where the robot is, relative to the waypoint. Leave empty to disable auto-adjust features.
Used in:
Variable name to retrieve the graph nav state from.
Waypoint ID where this PTZ configuration was originally set up.
Pose of body in waypoint frame at the time this PTZ configuration was originally set up.
Reset the autofocus on the Spot CAM PTZ
Used in:
Name of the service to use.
Host machine of the directory server that the Spot CAM registered with.
Store media using the Spot CAM.
Used in:
Name of the service to use.
Host machine of the directory server that the Spot CAM registered with.
The rest of the fields are from bosdyn.api.spot_cam.logging.StoreRequest, see that message for details.
What type of media should be stored from this action.
Extra metadata to store alongside the captured media.
State of the mission service.
Used in:
What questions are outstanding?
History of questions that have been answered. The server will set some limit on the available history.
Node states ordered from newest to oldest. history[0] will always be the data from this tick.
Current status of the mission.
Describes the unexpected error encountered by the mission service. Only filled out if STATUS_ERROR is set.
The mission's tick counter when this state was generated. -1 indicates no mission has been started.
The mission's ID. -1 indicates no mission has been loaded.
MissionText which is currently active.
A question that has been answered already.
Used in:
The question that this state information is related to.
The code corresponding to the option answered for this prompt.
Custom parameter values answered for this prompt.
Used in:
The tick counter when this state was produced.
Time at which this tick started, in host time basis.
At this tick, the state of every node that was ticked, in the order they were ticked.
Used in:
The result of this node's tick.
May be set when the 'result' is RESULT_FAILURE or RESULT_ERROR, this describes why the node failed. Not all nodes will have an error explaining why they failed.
ID from NodeInfo.
Nodes can write and read from the blackboard. Every node has a scoped blackboard.
Used in:
Possible overall status states of the mission.
Used in:
Invalid status, do not use.
The mission has failed due to a node failure.
The mission is still running.
The mission succeeded!
Execution has been paused.
The mission service itself or the behavior tree encountered an unexpected error, outside of a node failing.
No mission has been loaded.
The mission was stopped before completion.
Possible results of a stop request.
Used in:
Invalid status, do not use.
Mission is stopped/complete. The mission state may be in any of the "complete states", e.g. if the mission completed successfully before this RPC took effect, the mission will report STATUS_SUCCESS and not STATUS_STOPPED.
No mission has started playing. NOT returned if the mission is already stopped. In that case, you will get STATUS_OK.
Possible results for a StopRequest.
Used in:
Status unknown/unset.
Service stopped.
The request provided an invalid session ID.
Triggers a StoreMetadataRequest to the data acquisition store.
Used in:
Name of the service to use.
Host machine of the directory server that the data acquisition service is registered with.
The name of the blackboard variable that holds the associated AcquireDataRequest. The reference ID that this metadata is associated with will be copied from the request.
The name of the metadata object in the blackboard to be stored. The metadata object can be any protobuf message.
JSON representation of metadata
The data buffer channel on which to store the metadata.
Run a specific child based on a specified pivot_value. This node exists because of a subtle implementation detail in Selector(always_restart = true). The astute reader might believe that they can construct a switch node by using a selector with sequences & conditions as children. This is ALMOST true, EXCEPT that a selector (with always_restart = true) can leave multiple children in the running state IF: - A later selector child was RUNNING last tick - An earlier selector child returns RUNNING this tick Even though the later selector child won't be ticked, it will still be left in the running state and not restart when the selector advances to it again later. Sometimes this is desirable, sometimes it isn't. Switch is constrained to only have one child running, and if the switch ever switches children and return to a previously running child, that child will be restarted.
Used in:
Expresses an integer value that decides which child to run.
If false, this node will read the pivot_value once when its starts, and execute the specified child until it finishes even if the pivot_value changes. If true, this node will read from the pivot_value every tick, and change which child it's ticking when an underlying blackboard variable changes.
List of all children to possibly run.
If none of the above cases match, use this child
Possible results of ending a session.
Used in:
Status unknown/unset.
Session was torn down -- servicer has probably wiped all associated data / state.
The request provided an invalid session ID. This may mean the session was already torn down.
Possible results from the node. The FAILURE, RUNNING, and SUCCESS statuses map to the behavior tree terms, all others indicate an error in the TickRequest.
Used in:
Invalid; do not use.
Node completed but failed.
Node is processing and may finish in a future tick.
Node completed and succeeded.
The request provided an invalid session ID.
The request was missing required leases.
The request was missing required inputs.
There was another error with the input parameters. See the params_error field for details.
Data a user can associate with a node.
Used in:
,Identifier. Enables matching the Node uploaded to the MissionService with the NodeInfo downloaded from the MissionService.
Arbitrary data. We recommend keeping it small, to avoid bloating the size of the mission.
The source representation is a high level representation of this mission. By analogy, it is the "source code" to this "compiled" mission. At this time this field can either contain: - Nothing - A [bosdyn.api.autowalk.Walk] if the mission was compiled using the Autowalk service.
A value of a run-time or compile-time variable.
Used in:
, ,A constant value.
Look up a variable provided at run-time.
Look up a Node Parameter.
Declaration of a run-time or compile-time variable.
Used in:
, , , , ,Name of the variable, to be used as the key in KeyValue pairs.
Type that this variable is expected to have. Used to verify assignments and comparisons.
Supported types for blackboard or parameter values.
Used in: