Get desktop application:
View/edit binary Protocol Buffers messages
List the available dance moves and their parameter information.
Request a list of all possible moves and the associated parameters (min/max values).
Common request header
Response for ListAllMoves that defines the list of available moves and their parameter types.
Common response header
List of moves that the robot knows about.
A copy of the MoveParamsConfig.txt that the robot is using.
List the available choreography sequences currently on the robot.
Request a list of all playable choreography sequences that the robot knows about
Common request header
Common response header.
DEPRECATED as of 3.2.0: The string list of known sequence names has been deprecated and replaced by the repeated field sequence_info.
List of choreography sequences the robot knows about.
Return the ChoreographySequence with the given name and any requested animation data.
Request all the information needed to play a choreography sequence, this includes the sequence itself and any animations the sequence uses.
Common request header
Name of the requested sequence.
If true, skip returning the animation protos and only return the names of the required animations. Individual Animations can be requested with GetAnimationRequest.
Common response header.
ChoreographySequence with the name of the requested sequence.
All Animations used in the returned ChoreographySequence.
The string names of all the animations used in the choreography sequence.
Return the full Animation message with the given name.
Request an Animation proto using a given animation name.
Common request header
Name of the requested animated move.
Common response header.
Animation with the name of the requested animation.
Delete a retained choreography sequence from the collection of user uploaded choreography sequences.
Delete the retained file for a choreography sequence so the sequence will be forgotten on reboot
Common request header
Name of the sequence to delete.
Common response header.
Save a user uploaded choreography sequence to the robots collection of retained choreography sequences.
Write a choreography sequence as a file to robot memory so it will be retained through reboot
Common request header
Name of the sequence to be added to the selection of retained sequences
List of labels to add to the sequence when it is being saved
Common response header.
Modify the metadata of a choreography sequence.
Edit the metadata of a choreography sequence and update any retained files for that sequence with the new metadata
Common request header
Name of the sequence to be modified
Labels to be added to the sequence's metadata
Labels to be removed from the sequence's metadata
Common response header.
Clear all retained choreography sequence files from robot memory.
Reset to a clean slate with no retained files by deleting all non-permanent choreography related files
Common request header
Common response header.
Upload a dance to the robot.
Common request header.
ChoreographySequence to upload and store in memory
Should we run a sequences that has correctable errors? If true, the service will fix any correctable errors and run the corrected choreography sequence. If false, the service will reject a choreography sequence that has any errors.
Common response header. If the dance upload is invalid, the header INVALID request error will be set, which means that the choreography did not respect bounds of the parameters or has other attributes missing or incorrect.
If the uploaded choreography is invalid (will throw a header InvalidRequest status), then certain warning messages will be populated here to indicate which choreography moves or parameters violated constraints of the robot.
Upload an animation to the robot.
Common request header
Unique ID for the animated moves. This will be automatically generated by the client and is used to uniquely identify the entire animation by creating a hash from the Animation protobuf message after serialization. The ID will be conveyed within the MoveInfo protobuf message in the ListAllMoves RPC. This ID allows the choreography client to only reupload animations that have changed or do not exist on robot already.
AnimatedMove to upload to the robot and create a dance move from.
Common response header.
If the uploaded animated move is invalid (will throw a STATUS_ANIMATION_VALIDATION_FAILED), then warning messages describing the failure cases will be populated here to indicate which parts of the animated move failed. Note: there could be some warning messages even when an animation is marked as ok.
Execute the uploaded dance.
Common request header
The string name of the ChoreographySequence to use.
The absolute time to start the choreography at. This should be in the robot's clock so we can synchronize music playing and the robot's choreography.
The slice (betas/sub-beats) that the choreography should begin execution at.
/ The Lease to show ownership of the robot body.
Common response header
Unique ID for the execution. Will increment whenever an ExecuteChoreographyRequest is received. Will reset upon robot boot.
Manually start (or continue) recording the robot state.
Common request header
How long should the robot record for if no stop RPC is sent. A recording session can be extended by setting the recording_session_id below to a non-zero value matching the ID for the current recording session. For both start and continuation commands, the service will stop recording at end_time = (system time when the Start/Continue RPC is received) + (continue_recording_duration), unless another continuation request updates this end time. The robot has an internal maximum recording time of 5 minutes for the complete session log.
Provide the unique identifier of the recording session to extend the recording end time for. If the recording_session_id is 0, then it will create a new session and the robot will clear the recorded robot state buffer and restart recording. If this is a continuation of an existing recording session, than the robot will continue to record until the specified end time.
Common response header
Unique identifier for the current recording session
Manually stop recording the robot state.
Common request header
Common response header
Download log of the latest recorded robot state information.
Common request header
Which data should we download.
Common response header
Return status for the request.
Chunk of data to download. Responses are sent in sequence until the data chunk is complete. After receiving all chunks, concatenate them into a single byte string. Then, deserialize the byte string into an ChoreographyStateLog object.
Report the status of a dancing robot.
Common request header
Common response header
If dancing (or preparing to dance), the unique execution_id matching the one from ExecuteChoreographyResponse. If not dancing, 0.
Where we are in the script. (slice = 1/4 beat; standard unit of "time" within Choreography)
All of the moves currently executing.
Length of the current sequence.
Cadence of the current sequence.
When this was true in robot time.
Name of the active sequence, None if the robot is not in a dance state.
Commands intended for individual dance moves that are currently executing.
Common request header
Commands intended for individual moves. Repeated because multiple moves may be playing simultaneously and we may want to command multiple of them.
The Lease to show ownership of the robot body.
When the commands expire. In the robot's clock.
Common response header
One status for each command sent.
Adjust the time when a robot should start dancing within a tolerance.
Common request header
The absolute time to start the choreography at. This start time will override the start time defined in an ExecuteChoreographyRequest if it fits within the limits defined by the acceptable_time_difference and the override_validity_time. This should be in the robot's clock.
The maximum difference in time, in seconds, between an ExecuteChoreography start time and the override time where the override start time will used instead of the ExecuteChoreography start time. If the difference between the override time and the ExecuteChoreographyRequest time is bigger than the acceptable_time_difference value, the override time will not be used. When specified the acceptable_time_difference can be at most 2 minutes. If not specified, the acceptable_time_difference will be 20 seconds.
For what period of time, in seconds from the current moment, should this override start time be considered valid. override start times that are further in the future than the override validity period won't be accepted when received. When specified, override_validity_time can be at most 5 minutes past the current time. If not specified override_validity_time will be 60 seconds.
Common response header
If certain parameters didn't fall within the correct limits warning messages describing those issues will be populated here to indicate those problems. If there were issues with parameters other than the override_start_time there may be warnings even if the response status was STATUS_OK.
A door command for the robot to execute plus a lease.
Common request header.
The Lease to show ownership of the robot.
The command to execute.
Response to the door command request.
Common response header.
Details about how the lease was used.
Return status for a request.
Human-readable error description. Not for programmatic analysis.
Unique identifier for the command, If empty, command was not accepted.
A request for feedback of a specific door command.
Common request header.
Unique identifier for the command, provided by OpenDoorResponse.
Feedback for a specific door command. This RPC reports the robot's progress opening a door.
Common response header.
Generic robot command feedback.
Details about how the lease was used (unset if unknown).
Specific door full body command feedback.
Request a solution to an inverse kinematics problem for Spot (or an indication that a solution could not be found). This message can be used to make both reachability and stance-selection queries. When filling out the request, the caller specifies one option from each of the following categories: - stance specifications (fixed foot positions or feet on a ground plane), - tool specifications (wrist-mounted), and - task specifications (tool pose or gaze) When evaluating potential robot configurations, the service considers joint limits, and static stability in addition to the requirements specified in the request.
The root frame is the parent for the optional scene frame. The root frame must be either “vision" or “odom”.
The task frame as well as body and foot related fields below are specified in this optional scene frame. If unset, it defaults to the identity transform and all scene quantities are therefore expressed in the root frame. This frame is useful in cases where the inverse kinematics problem is most easily defined relative to some other frame (e.g. the frame defined by a fiducial detection next to a piece of equipment).
Tool related fields below are specified in this optional task frame. If unset it defaults to the identity transform and all task frame quantities are therefore expressed in the scene frame.
The solver will prefer arm configurations close to the specified named configuration. Defaults to ARM_CONFIG_CURRENT.
Entries override the nominal joint positions for the specified arm joints. Unspecified joints will use the values specified by nominal_arm_configuration.
The solver will prefer configurations that put the body close to this pose. Default to the current body pose.
Defines the stance condition for this query. Defaults to fixed_stance.
Defines the tool for this query. Defaults to wrist_mounted_tool.
Defines the task for this query.
The tool will be constrained to be at the desired pose.
The tool's x-axis will be constrained to point at a target point while the solver will prefer configurations that put the tool frame closer to the desired pose.
Response type for InverseKinematicsRequest. If a solution was found (STATUS_OK) the robot_configuration field will contain that solution. Otherwise robot_configuration will be empty.
Return status of the request.
The transforms_snapshot subfield will include the root, scene, and task frames of the request as well as the body, tool, and foot frames in the solved configuration. The joint_states subfield will include the name and position for each joint in the solved configuration.
RPCs for monitoring robot health and recalibration various sensors. These procedures should be run periodically in order to keep the system running in the best possible condition.
Send a command to the SpotCheck service. The spotcheck service is responsible to both recalibrating actuation sensors and checking camera health.
Request for the SpotCheckCommand service.
Common request header.
The Lease to show ownership of the robot. Lease required to issue any SpotCheck command.
The command describing what the spot check service should do.
Response for the SpotCheckCommand service.
Common response header.
Details about how the lease was used.
Command status
Human-readable description if an error occurred.
Check the status of the spot check procedure. After procedure completes, this reports back results for specific joints and cameras.
Request for the SpotCheckFeedback service.
Common request header.
Response for the SpotCheckFeedback service.
Common response header.
The state of the spot check routine.
The last command executed by Spotcheck. When SpotCheck is in state WAITING_FOR_COMMAND, the last command has completed.
The specifics of the error for the SpotCheck service.
Results from camera check. The key string is the location of the camera (e.g. frontright, frontleft, left, ...)
Results from load cell calibration. The key string is the location of the joint (e.g. fl.hxa, fl.hya, fl.kna, ...)
Results from output position sensor calibration. The key string is the location of the joint (e.g. fl.hx, fl.hy, fl.kn, ...)
Result from the payload check
Results of the hip range of motion check The key string is the name of the leg (e.g. fl, fr, hl, ...)
The approximate progress of the spot check routine, range [0-1].
Timestamp for the most up-to-date calibration
Send a camera calibration command to the robot. Used to start or abort a calibration routine.
Request for the CameraCalibrationCommand service.
Common request header.
The Lease to show ownership of the robot. Lease is required for all cal commands.
Command to start/stop the calibration.
Response for the CameraCalibrationCommand service.
Common response header.
Details about how the lease was used.
Check the status of the camera calibration procedure.
Request for the CameraCalibrationFeedback service.
Common request header.
Response for the CameraCalibrationFeedback service.
Common response header.
Status of camera calibration procedure.
The approximate progress of the calibration routine, range [0-1]. Status takes precedence over progress value.
Used in:
Any parameters that had to be adjusted into the legal range will have their adjusted values.
Give information about the commands the move can accept. For example: Minimum and maximum values.
Used in:
For the animated arm, the arm can be described using either the joint angles or the pose of the hand. NOTE: each keyframe within a single Animation proto must always specify the arm using the same format for all frames.
Full arm joint angle specification.
The hand position in the animation frame
An SE3 Pose for the hand where orientation is specified using either a quaternion or euler angles
Used in:
The hand's orientation described with euler angles (yaw, pitch, roll).
The hand's orientation described with a quaternion.
The AnimateBody keyframe describes the body's position and orientation. At least one dimension of the body must be specified.
Used in:
For the animated body keyframe, describe the body position using either the body position or the center of mass position. NOTE: each keyframe within a single Animation proto must always specify the body position using the same format for all frames.
The body position in the animation frame.
The body's center of mass position in the animation frame.
For the animated body keyframe, describe the body orientation using either euler angles or a quaternion. NOTE: each keyframe within a single Animation proto must always specify the body orientation using the same format for all frames.
The body's orientation described with euler angles (yaw, pitch, roll).
The body's orientation described with a quaternion.
Used in:
The AnimateLegs keyframe describes each leg using either joint angles or the foot position.
Used in:
Front left leg.
Front right leg.
Hind left leg.
Hind right leg.
Used in:
,The name of the animated move. There are no default values/bounds associated with this field.
How many slices to smoothly transition from previous pose to animation.
How many slices to return from animation to nominal pose. Zero indicates to keep final animated pose.
Multiplier for animated translation by axis to exaggerate or suppress motion along specific axes.
Multiplier for the animated orientation by axis to exaggerate or suppress motion along specific axes.
How many slices to smoothly transition from previous pose to animation.
Joint angle offsets in radians for the arm joints.
How fast to playback. 1.0 is normal speed. larger is faster.
How late into the nominal script to start.
Multiply all gripper angles by this value.
How hard the gripper can squeeze. Fraction of full strength.
Which dance frame to use as a reference for workspace arm moves. Including this parameter overrides the animation frame.
How hard to try to track the animated body motion. Only applicable to animations that control both the body and the legs. On a scale of 1 to 10 (11 for a bit extra). Higher will result in more closely tracking the animated body motion, but possibly at the expense of balance for more difficult animations.
A single leg keyframe to describe the leg motion.
Used in:
For the animated single legs, the leg can be described using either the joint angles or the position of the foot. NOTE: each keyframe within a single Animation proto must always specify a single leg using the same format for all frames.
Full leg joint angle specification.
The foot position of the leg in the animation frame.
If true, the foot is in contact with the ground and standing. If false, the foot is in swing. If unset, the contact will be inferred from the leg joint angles or foot position.
Used in:
Represents an animated dance move that can be used within choreographies after uploading.
Used in:
, , , ,The name of the animated move, which is how it will be referenced in choreographies.
The animated move is composed of animation keyframes, which specify the duration of each frame. The keyframe describes the position of the body/arms/gripper.
Indicators as to which parts of the robot that the move controls.
Track animated swing trajectories. Otherwise, takes standard swings between animated liftoff and touchdown locations.
For moves that control the legs, but not the body. If legs are specified by joint angles, we still need body roll and pitch to know the foot height. If `assume_zero_roll_and_pitch` is true, they needn't be explicitly specified.
Optional bpm that the animation is successful at.
When true, rescales the time of each keyframe slightly such that the move takes an integer number of slices. If false/absent, the move will be padded or truncated slightly to fit an integer number of slices.
The different parameters (minimum, default, and maximum) that can change the move. The min/max bounds are used by Choreographer to constrain the parameter widget, and will also be used when uploading a ChoreographySequence containing the animation to validate that the animated move is allowed.
Indicates if the animated moves can be shortened (the animated move will be cut off). Not supported for leg moves.
Indicates if the animated moves can be stretched (animated move will loop). Not supported for leg moves.
Indicates if the move should start in a neutral stand position.
Step exactly at the animated locations, even at the expense of balance. By default, the optimizer may adjust step locations slightly.
DEPRECATED as of 3.3.0: The boolean field has been replaced by the more fine-grained control of timing_adjustability. The following field will be deprecated and moved to 'reserved' in a future release.
How much the optimizer is allowed to adjust the timing. On the range [-1, 1]. -1: Everything will be timed exactly as animated, even at the expense of balance. 0: Default value: some timing adjust allowed. 1: Timing can be adjusted drastically.
If set true, this animation will not run unless the robot has an arm.
If set true, this animation will not run unless the robot has no arm.
If the animation completes before the move's duration, freeze rather than looping.
If the animation starts from a sit pose. Default starting pose is stand.
If true, this animation can be used as direct input to custom gait to define the gait style
Mode for hand trajectory playback
Used in:
Playback as specified. Arm animations specified with joint angles playback in jointspace and arm animations specified as hand poses playback in workspace.
Playback in jointspace. Arm animation will be most consistent relative to the body
Playback in workspace. Hand pose animation will be most consistent relative to the current footprint. Reference frame is animation frame.
Playback in workspace with poses relative to the dance frame. hand pose animation will be most consistent relative to a fixed point in the world.
Used in:
Time from the start of the animation for this frame.
Different body parts the animated move can control. It can control multiple body parts at once.
At record time, the robot is only physically required to go through the door in one direction, but the command for both directions must be recorded.
The door command issued for going through the door in the recorded direction
The door command for going through the door in the reverse to recorded direction
The AnimateArm keyframe describes the joint angles of the arm joints in radians. Any joint not specified, will hold the previous angle it was at when the keyframe begins. At least one arm joint must be specified.
Used in:
,Used in:
Parameters specific to ArmMove move.
Used in:
Joint angles in radians for the arm joints.
How the motion should be paced.
Movement for the gripper.
Parameters for offsetting the body from the normal default.
Used in:
Desired base offset relative to the footprint pseudo-frame. The footprint pseudo-frame is a gravity aligned frame with its origin located at the geometric center of the feet in the X-Y axis, and at the nominal height of the hips in the Z axis. The yaw of the frame (wrt the world) is calculated by the average foot locations, and is aligned with the feet.
The base will adjust to assist with manipulation, adjusting its height, pitch, and yaw as a function of the hand's location. Note, manipulation assisted body control is only available for ArmCommand requests that control the end-effector, and are expressed in an inertial frame. For example, sending a ArmCartesianCommand request with root_frame_name set to "odom" will allow the robot to compute a body adjustment. However, sending a ArmCartesianCommand request with root_frame_name set to "body" or sending an ArmJointMoveCommand request is incompatible, and the body will reset to default height and orientation.
An absolute desired position and orientation of the robot body origin. Command may be saturated to achievable or safe postures on receipt. Note: This parameter only has effect when coupled with a StandCommand. For other commands, the robot will fall back to defaults.
The rotation setting for the robot body. Ignored if body_assist_for_manipulation or body_pose are enabled.
Instead of directly specify the base offset trajectory, these options allow the robot to calculate offsets based on the hand's location. If the robot does not have a SpotArm attached, sending this request will have no effect.
Used in:
,Enable the use of body yaw to assist with manipulation.
Enable use of hip height (e.g. body height/pitch) to assist with manipulation.
An SE3 based desired body pose trajectory with a specified base frame.
Used in:
The root frame for the desired pose, e.g. "vision" or "odom"
The SE3 pose trajectory
Setting for how the robot interprets base offset pitch & roll components. In the default case (ROTATION_SETTING_OFFSET) the robot will naturally align the body to the pitch of the current terrain. In some circumstances, the user may wish to override this value and try to maintain alignment with respect to gravity. Be careful with this setting as it may likely degrade robot performance in complex terrain, e.g. stairs, platforms, or slopes of sufficiently high grade.
Used in:
Invalid; do not use.
Pitch & Roll are offset with respect to orientation of the footprint.
Pitch & Roll are offset with respect to gravity.
External Force on robot body parameters. This is a beta feature and still can have some odd behaviors. By default, the external force estimator is disabled on the robot.
Used in:
The type of external force described by the parameters.
The frame name for which the external_force_override is defined in. The frame must be known to the robot.
Specifies a force that the body should expect to feel. This allows the robot to "lean into" an external force. Be careful using this override, since incorrect information can cause the robot to fall over. For example, if the robot is leaning against a wall in front of it, the force override would be in the negative x dimension. If the robot was pulling something directly behind it, the force override would be in the negative x dimension as well.
Indicates what external force estimate/override the robot should use. By default, the external force estimator is disabled on the robot.
Used in:
No external forces considered.
Use external forces estimated by the robot
Use external forces specified in an override vector.
Parameters specific to the BodyHold move.
Used in:
The robot will rotate its body to the specified orientation (roll/pitch/yaw) [rad].
The positional offset to the robot's current location [m].
How many "slices" (beats or sub-beats) are allowed before reaching the desired pose.
How many "slices" (beats or sub-beats) are allowed for the robot to return to the original pose.
Parameters for the Bourree move.
Used in:
The speed at which we should bourree [m/s]. X is forward. Y is left.
How fast the bourree should turn [rad/s].
How far apart front and hind feet should be. [m]
Parameters specific to the ButtCircle DanceMove.
Used in:
How big a circle the robutt will move in. Described in meters.
The number of beats that elapse while performing the butt circle.
The number of circles that will be performed. If non-zero, takes precedence over beats_per_circle.
The pivot point the butt circles should be centered around.
Which way to rotate.
Where to start. Zero is up.
Used in:
Used in:
Used in:
Unused enum.
Start calibration routine.
Cancel calibration routine.
Used in:
Unused enum.
The robot is actively running calibration routine.
The robot successfully ran calibration routine and is ready to use again.
API client canceled calibration.
The robot is not powered on.
Ownership error during calibration.
Robot encountered an error while trying to move around the calibration target. Robot possibly encountered a fault. Check robot state for more details
Calibration procedure produced an invalid result. This may occur in poor lighting conditions or if calibration target moved during calibration procedure.
Something extraordinary happened. Try power cycling robot or contact BD.
Camera focus issue detected. This is a hardware issue.
Target partially, but not fully, in view when starting calibration.
Target not visible when starting calibration.
Target not aligned with gravity when starting calibration.
Target upside down when starting calibration.
Calibration routine has never been run. No feedback to give.
One of the cameras is not detected on the USB bus.
Failed to write intrinsic calibration.
Failed to write extrinsic calibration.
Spotcheck failed after the camera calibration.
Parameters specific to the chicken head move.
Used in:
Bobs the head in this direction in the robot footprint frame.
How fast to bob the head.
Should we move the frame when the robot steps?
Information for the Choreographer to display.
Used in:
For the GUI, these are marked events in steps. For example if the move puts a foot down, the mark might be exactly when the foot is placed on the ground, relative to the start of the move.
Textual description to be displayed in the GUI.
Image path (local to the UI) to display as an icon. May be an animated gif.
Move Category affects the grouping in the choreographer list view, as well as the color it's displayed with.
Used in:
Color of the object. Set it to override the default category color.
Used in:
RGB values for color ranging from [0,255].
Alpha value for the coloration ranges from [0,1].
Describes the metadata and information only used by the Choreographer GUI, which isn't used in the API
The main ChoreographySequence that makes up the dance and is sent to the robot.
If specified this is the UI local path of the music to load.
UI specific member that describes exactly when the music should start, in slices. This is for time sync issues.
The start slice for the choreographer save.
Used in:
Describes metadata for the Choreography sequence that can be used for a number of different UIs
Used in:
the list of user assigned categories that the sequence belongs to
Represents a particular choreography sequence, made up of MoveParams.
Used in:
, , , ,Display name or file name associated with the choreography sequence.
Number of slices per minute in the choreography sequence. Typically a slice will correspond to 1/4 a beat.
All of the moves in this choreography sequence.
Metadata associated with the sequence.
Can be used to specify an explicit entrance_state in the case where the first legs-track move accepts multiple entrance_states. Will also be used if the sequence contains no legs-track moves. Can otherwise be left unset. If set and not within the set of acceptable entrance_states for the first legs-track move, the Sequence will be considered invalid.
A set of key frames recorded at a high rate. The key frames can be for the duration of an executing choreography or for the duration of a manual recorded log (triggered by the StartRecordingState and StopRecordingState RPCs). The specific set of keyframes is specified by the LogType when requesting to download the data.
Used in:
Used in:
Status unknown. Do not use.
The adjusted time value was accepted and stored.
The adjusted time was not stored, time requested is too far in the past.
The override time was not stored, time requested exceeded the validity time limit.
No override start time was provided.
Parameters specific to clapping.
Used in:
Direction in a gravity-aligned body frame of clapping motion. A typical value for the location is (0, 1, 0).
Location in body frame of the clap. A typical value for the location is (0.4, 0, -0.5).
Speed of the clap [m/s].
How far apart the limbs are before clapping [m].
Used in:
Do not use.
All retained sequences were successfully removed from robot memory
Deletion of all retained files failed
Used in:
, , , , ,Parameters for the robot's crawling gait.
Used in:
The number of slices (beats/sub-beats) the duration of a leg swing in the crawl gait should be.
The speed at which we should crawl [m/s]. X is forward. Y is left.
The distance between the robot's left and right feet [m].
The distance between the robot's front and back feet [m].
Used in:
Locomotion velocity in the horizontal plane in robot body frame. (m/s, m/s, rad/s)
When true, robot will transition to a stand, then continue the sequence. Until then, the sequence will keep looping through this move.
How much to offset the body pose. Additive with other offsets.
Meters.
Radians.
Used in:
Maximum absolute value of locomotion velocity in the horizontal plane in robot body frame. (m/s, m/s, rad/s)
Maximum absolute value of the body offsets.
Meters.
Radians.
Used in:
Maximum steering commands that will be accepted.
How much to limit steering acceleration. 1 is normal. Smaller is less acceleration.
Gait pattern. When to liftoff and touchdown each leg.
Relative positions of feet.
Constant posture. For a phase-dependent posture, combine with a Body move. Actually hip height regardless of payload configuration.
Modify the path the foot takes between liftoff and touchdown. General swing parameters apply to legs that are not configured to have their own parameter set.
Individual legs can have their own parameters or use the general swing parameters.
Stand rather than stepping in place when not moving.
Go back to a standard rectangular stance when ending the gait. Otherwise maintains the customized stance shape.
Parameters that impact the stability of the gait rather than its appearance.
Friction coefficient between the feet and the ground.
How much the robot is allowed to deviate from the specified timing. 0 means no deviation. Otherwise: large values mean less deviation and small values mean more is acceptable. Too much timing adjustment (low, non-zero values) may make the gait unstable. At least a little timing adjustment is recommended for gaits with flight phases (periods with 0 feet on the ground).
How much the robot is allowed to deviate from the specified stance shape. 0 means no deviation. Otherwise: large values mean less deviation and small values mean more is acceptable. Too much position adjustment (low, non-zero values) may make the gait unstable.
Enable/disable various aspects of perception.
How far the robot should stumble before giving up and freezing.
How sensitive we should be to trip detection. On the range [0, 1], where 1 is normal sensitivity and 0 is ignoring all trips. Useful for very aggressive gaits or when a costume is restricting leg motion.
Using an animated cycle to define the gait style
Used in:
Do not use.
The sequence was successfully deleted
The sequence does not exist
The sequence is already temporary and will be removed at the next reboot.
Permanent sequences cannot be deleted
Results from camera check.
Used in:
Return status for the request.
Higher is worse. Above 100 means the camera is severely out of calibration.
Errors reflect an issue with camera hardware.
Used in:
Unused enum.
No detected calibration error.
Possible calibration error detected.
Error with robot calibration.
Door Command specific request and Feedback.
(message has no fields)
The robot searches along a ray for the door handle and automatically grasp it before executing door opening.
Used in:
The name of the frame that the following fields are expressed in.
The start of the ray the robot searches along for the door handle.
The end of the ray the robot searches along for the door handle.
The side of the hinge with respect to the robot when facing the door.
The direction the door moves with respect to the robot.
Open doors that do not require a grasp, just a push. This could be a door with no latching mechanism that just requires a push, or a door with a pushbar. The robot will automatically push the door open and walk through.
Used in:
The name of the frame that the following fields are expressed in.
The point that the robot will push on.
The side of the hinge with respect to the robot when facing the door.
Used in:
Current status of the command.
This is the distance the robot (i.e. the origin of the 'body' frame) is past the door frame threshold. When it's negative the robot is on the starting side of the door, 0 when the robot is in the middle of the door, and positive when the robot is on the finishing side.
Used in:
STATUS_UNKNOWN should never be used. If used, an internal error has happened.
Robot has finished opening the door.
Robot is attempting to open the door.
The robot has stopped making progress in opening and going through the door. It will keep trying but may stay in this state indefinitely.
The robot could not detect the door. It will keep trying but may stay in this state indefinitely.
Specify type of door handle.
Used in:
Specify if the hinge is on the left or right side of the door, when looking at the door, relative to the door handle.
Used in:
, ,Used in:
,Specify if the door is push or pull, when looking at the door.
Used in:
,The robot is already grasping the door handle and will continue opening the door based on user specified params.
Used in:
The side of the hinge with respect to the robot when facing the door.
The direction the door moves with respect to the robot.
The type of handle on the door.
Used in:
Unknown. Do not use.
The robot state information recorded from the time of the manual start RPC (StartRecordingState) to either {the time of the manual stop RPC (StopRecordingState), the time of the download logs RPC, or the time of the internal service's buffer filling up}.
The robot will automatically record robot state information for the entire duration of an executing choreography in addition to any manual logging. This log type will download this information for the last completed choreography.
Used in:
Status unknown. Do not use.
The log data downloaded successfully and is complete.
Error where there is no robot state information logged in the choreography service.
Error where the complete duration of the recorded session caused the service's recording buffer to fill up. When full, the robot will stop recording but preserve whatever was recorded until that point. The robot has an internal maximum recording time of 5 minutes. The data streamed in this response will go from the start time until the time the buffer was filled.
Enum to describe the type of easing to perform for the slices at either (or both) the beginning and end of a move.
Used in:
, , ,Euler Angle rates (yaw->pitch->roll) vector that uses wrapped values so we can tell which elements are set.
Used in:
Euler Angle (yaw->pitch->roll) vector.
Used in:
,Euler Angle (yaw->pitch->roll) vector that uses wrapped values so we can tell which elements are set.
Used in:
, , , , , , ,Used in:
Used in:
Used in:
Used in:
Used in:
Results from foot height checks.
Return status for the request.
The difference between foot height and mean feet height (m).
Errors reflect an issue with robot calibration.
Used in:
Unused enum.
No detected calibration error.
Possible calibration error detected.
Error with robot calibration.
Used in:
Used in:
Parameters specific to FrontUp move.
Used in:
Should we raise the hind feet instead.
Used in:
Do not use.
Finding + returning the animation succeeded.
The requested sequence was not found.
Used in:
Do not use.
Finding + returning the sequence succeeded.
The requested sequence was not found.
Used in:
If true, motion is specified relative to location at move start. If false, motion is specified in the dance frame.
Ignored if absolute = false.
Ignored if absolute = true;
Should we combine with the next move into a smooth trajectory.
Parameters for open/close of gripper.
Used in:
Angle in radians at which the gripper is open. Note that a 0 radian angle correlates to completely closed.
Speed in m/s at which the gripper should open/close to achieve the desired angle.
Used in:
The measured angles (radians) of the HX and HY joints where the obstruction was detected
Errors reflect an issue with hip range of motion
Used in:
Parameters specific to Hop move.
Used in:
The velocity of the hop gait (X is forward; y is left)[m/s].
How fast the hop gait should turn [rad/s].
How long the robot should stand in between each hop.
Used in:
Used in:
The tool pose relative to the parent link (body). Defaults to identity, making the tool frame coincident with the body frame
Used in:
The feet will be constrained to the specified positions relative to the scene frame. If unspecified, these will default to the current positions of the feet.
Used in:
Unknown arm configuration
The current configuration of the arm joints
The configuration of the arm joints in the ready position. The ready position is defined with the hand directly in front of and slightly above the body, with the hand facing forward in the robot body +X direction.
Used in:
The feet will be constrained to lie on the XY-plane of the ground frame. If unspecified the ground plane will be the robot's current ground plane estimate.
Used in:
The point to “look at” with the x-axis of the tool frame. Defaults to the zero vector.
Optional desired pose of the tool expressed in the task frame. Will be constrained to 'look at' the target regardless of the requested orientation. If unset, only the “look at” constraint will be applied.
Used in:
The desired pose of the tool expressed in the task frame. Defaults to identity.
Used in:
The tool pose relative to the parent link (wrist). Defaults to [0.19557 0 0] [1 0 0 0] a frame with its origin slightly in front of the gripper's palm plate aligned with the wrist's orientation.
Used in:
Joint indexing
Kinematic calibration results
Used in:
A flag to indicate if results has an error.
The current offset [rad]
The previous offset [rad]
Joint calibration health score. range [0-1] 0 indicates an unhealthy kinematic joint calibration 1 indicates a perfect kinematic joint calibration Typically, values greater than 0.8 should be expected.
Errors reflect an issue with robot hardware.
Used in:
Unused enum.
No hardware error detected.
Error detected in clutch performance.
Error if a joint has an incorrect range of motion.
Error if the measured endstops shifted from kin cal.
Error if checking the joint would have a collision.
Parameters for the robot making a jump.
Used in:
The amount in radians that the robot will turn while in the air.
The amount of time in slices (beats) that the robot will be in the air.
The distance between the robot's left and right feet [m].
The distance between the robot's front and back feet [m].
How far the robot should jump [m].
How much it should lo/td the first pair of lets ahead of the other pair. In fraction of flight time.
Should we turn to a yaw in choreography sequence frame?
Should we translate in choreography sequence frame?
The direction the robot should face upon landing relative to pose at the start of the dance. [rad]
Where the robot should land relative to the pose at the start of the dance. [m]
*** Deprecation Warning *** DEPRECATED as of 3.0.0: The absolute field has been deprecated and split into the yaw_is_absolute and translation_is_absolute fields. The following field will be deprecated and moved to 'reserved' in a future release.
If split_fraction is non-zero, which legs to lift first.
Used in:
Parameters specific to the kneel_circles move.
Used in:
Location in body frame of the circle center. A typical value for the location is (0.4, 0, -0.5).
How beats per circle. One or two are reasonable values.
How many circles to perform. Mutually exclusive with beats_per_circle.
How far apart the feet are when circling [m].
Size of the circles [m].
Which way to circle.
Parameters specific to KneelLegMove2 move.
Used in:
Joint angles of the front left leg in radians.
Joint angles of the front right leg in radians.
How the motion should be paced.
Should we combine with the next move into a smooth trajectory.
Parameters specific to KneelLegMove move.
Used in:
Joint angles of the left front leg in radians. If mirrored, the joints will be flipped for the other leg.
If mirrored is true, the joints will be flipped for the leg on the other side (right vs left) of the body.
How the motion should be paced.
Enum to describe which leg is being referenced in specific choreography sequence moves.
Used in:
Leg indexing
Description of each leg joint angle (hip x/y and knee) in radians.
Used in:
,Used in:
Results from leg pair checks..
Return status for the request.
The change in estimated distance between two feet from tall to short stand (m)
Used in:
Unused enum.
No detected calibration error.
Possible calibration error detected.
Error with robot calibration.
Results from load cell check.
Used in:
A flag to indicate if results has an error.
The current loadcell zero as fraction of full range [0-1]
The previous loadcell zero as fraction of full range [0-1]
Errors reflect an issue with robot hardware.
Used in:
Unused enum.
No hardware error detected.
Load cell calibration failure.
The locomotion hint specifying the gait of the robot.
Used in:
Invalid; do not use.
No hint, robot chooses an appropriate gait (typically trot.)
Most robust gait which moves diagonal legs together.
Trot which comes to a stand when not commanded to move.
Slow and steady gait which moves only one foot at a time.
Crawl which comes to a stand when not commanded to move.
Four beat gait where one foot touches down at a time.
Amble which comes to a stand when not commanded to move.
Demo gait which moves diagonal leg pairs together with an aerial phase.
Demo gait which hops while holding some feet in the air.
HINT_AUTO_TROT is deprecated due to the name being too similar to the Spot Autowalk feature. It has been replaced by HINT_SPEED_SELECT_TROT. Keeping this value in here for now for backwards compatibility, but this may be removed in future releases.
HINT_AUTO_AMBLE is deprecated due to the name being too similar to the Spot Autowalk feature. It has been replaced by HINT_SPEED_SELECT_AMBLE. Keeping this value in here for now for backwards compatibility, but this may be removed in future releases.
Used in:
Boolean indicating whether or not the robot's foot is in contact with the ground.
Used in:
front left leg joint angles.
front right leg joint angles.
hind left leg joint angles.
hind right leg joint angles.
Full set of joint angles for the arm and gripper.
Used in:
Full set of joint angles for the robot.
Foot contacts for the robot.
The current pose of the robot body in animation frame. The animation frame is defined based on the robot's footprint when the log first started recording.
The timestamp (in robot time) for the key frame.
Params common across spot movement and mobility.
Used in:
Max allowable velocity at any point in trajectory.
Parameters for controlling Spot's body during motion.
Desired gait during locomotion
DEPRECATED as of 3.2.0: The boolean field has been replaced by the field stairs_mode. The following field will be deprecated and moved to 'reserved' in a future release.
The selected option for stairs mode. If unset, will use the deprecated stair_hint instead. If falling back on stair_hint, false will map to STAIRS_MODE_OFF. This will be changed to STAIRS_MODE_AUTO in a future release.
Allow the robot to move with degraded perception when there are perception faults.
Control of obstacle avoidance.
Swing height setting
Ground terrain parameters.
Prevent the robot from using StairTracker even if in stairs mode.
Prevent the robot from automatically walking off a staircase in the case of an error (ex: e-stop settle_then_cut, critical battery level)
Robot Body External Force parameters
Prevent the robot from pitching to get a better look at rearward terrain except in stairs mode.
Disable the secondary nearmap-based cliff avoidance that runs while on stairs.
When true, allows the robot to traverse large areas with no stereo data. When false, these regions of missing data are assumed to be cliffs which the robot avoids.
The selected option for hazard detection.
Semantic hazard detection can detect and classify objects or regions in the world as obstacles or areas to avoid that would not normally be classified as such. Obstacle avoidance still needs to be on for the robot to avoid these additional hazards. A CORE I/O is necessary for semantic hazard detection. Using HAZARD_DETECTION_MODE_COST will prevent detected hazards from becoming blocking obstacles, and instead add areas to try and avoid when navigating autonomously.
Used in:
Stairs are only supported in trot gaits. Enabling stairs mode will override some user defaults in order to optimize stair behavior.
Used in:
Invalid; do not use.
Robot will automatically turn mode on or off.
Stairs will be detected and avoided.
Used in:
Do not use.
The sequence was successfully modified
The sequence does not exist
Permanent sequences cannot be modified
The changes were made, but the retained sequence file was not updated and changes were reverted
Either, both, or neither of move_type and move_id can be used to specify which move this command is intended for.
Used in:
Name of the move type this command is intended for.
ID of the move this command is intended for.
Different move types will accept different types of commands.
Defines properties of a choreography move.
Used in:
Unique ID of the move type.
The duration of this move in slices (usually 1/4 beats).
The duration of this move in seconds. If specified, overrides move_length_slices.
If true, the duration may be adjusted from the default specified by move_length_slices or move_length_time.
Bounds on the duration may be adjusted in slices (usually 1/4 beats). These apply to extendable moves, but may also override move_length_time for some BPM.
Bounds on the duration in time. These apply to extendable moves, but may also override move_length_slices for some BPM.
The admissible states the robot can be in currently for this move to execute.
The state of the robot after the move is complete.
Indicators as to which parts of the robot that the move controls.
Controls the face (status) lights.
Information for the GUI tool to visualize the sequence move info.
Unique ID for the animated moves. This is sent with the UploadAnimatedMove request and use to track which version of the animated move is currently saved on robot. The ID can be unset, meaning the RPC which uploaded the animation did not provide an identifying hash.
The state that the robot is in at the start or end of a move.
Used in:
, ,Unknown or unset state.
The robot is in a normal (standing) state.
The robot is kneeling down.
The robot is sitting.
The robot requires a self-right.
Defines varying parameters for a particular instance of a move.
Used in:
,Unique ID of the move type that these params are associated with.
How many slices since the start of the song this move should be executed at.
The number of slices (beats/sub-beats) that this move is supposed to last for. If the move was extendable, then this corresponds to the number of slices that the user requested.
The ID number can be optionally set by the client as part of the UploadChoreographyRequest. If not set by the client, the robot will assign an id to each move that is unique within the sequence. The ID (either set by the client or the robot) will be reported in the ActiveMoves in the ChoreographyStatusResponse. The ID can be used to specify which move a Command is intended for.
Each move type can define its own parameters which get stored here. Only a single parameter set can be used to describe a move instance.
Parameters for obstacle avoidance types.
Used in:
Use vision to make the feet avoid obstacles by swinging higher?
Use vision to make the feet avoid constraints like edges of stairs?
Use vision to make the body avoid obstacles?
Desired padding around the body to use when attempting to avoid obstacles. Described in meters. Must be >= 0.
Prevent the robot body from raising above nominal height to avoid lower-leg collisions with the terrain.
Use vision to make the robot avoid stepping into negative obstacles?
Used in:
An unknown / unexpected error occurred.
Request was accepted.
Error sending command to RobotCommandService.
The plane of the door could not be detected.
Parameters specific to pace translation.
Used in:
How far to move relative to starting position. [m]
Where to move relative to position at start of script. [m]
Is motion specified relative to pose at start of dance?
Swing parameters to describe the footstep pattern during the pace translation gait. Note, a zero (or nearly zero) value will be considered as an unspecified parameter.
How far to turn, described in radians with a positive value representing a turn to the left.
Orientation to turn to, relative to the orientation at the start of the script. [rad]
Should we turn to a yaw in choreography sequence frame?
*** Deprecation Warning *** DEPRECATED as of 3.0.0: The absolute field has been deprecated and split into the yaw_is_absolute and translation_is_absolute fields. The following field will be deprecated and moved to 'reserved' in a future release.
Results of payload check.
Used in:
A flag to indicate if configuration has an error.
Indicates how much extra payload (in kg) we think the robot has Positive indicates robot has more payload than it is configured. Negative indicates robot has less payload than it is configured.
Errors reflect an issue with payload configuration.
Used in:
Unused enum.
No error found in the payloads.
There is a mass discrepancy between the registered payload and what is estimated.
Enum for the pivot point for certain choreography sequence moves.
Used in:
,Parameters specific to the RandomRotate move.
Used in:
The amplitude [rad] of the rotation in each axis.
The speed [rad/s] of the motion in each axis.
The amount of variation allowed in the speed of the random rotations [m/s]. Note, this must be a positive value.
The specified speed values will be split into this many number of tiers between the bounds of [speed - speed_variation, speed + speed variation]. Then a tier (with a specified speed) will be randomly chosen and performed for each axis.
How much can the output speed vary from the chosen tiered speed.
Used in:
Used in:
Used in:
Parameters for the robot rotating the body.
Used in:
The robot will rotate its body to the specified orientation (roll/pitch/yaw).
If true, the robot will transition back to the initial pose we started at before this choreography sequence move begin execution, and otherwise it will remain in whatever pose it is in after completing the choreography sequence move.
Parameters specific to RunningMan move.
Used in:
How high to pick up the forward-moving feet [m].
How far to spread the contralateral pair of feet [m].
Should we reverse the motion?
How many full running man cycles should the robot complete in place before starting to move with the desired velocity.
Do the move at some multiple of the dance cadence.
What fraction of the time to have feet on the ground.
How high to hold the center of mass above the ground on average.
Used in:
Do not use.
The sequence was successfully saved
The requested sequence was not found
This sequence is already saved in the release
We failed to save a file with the sequence information to robot
Used in:
Use temporary sequences during development with choreographer, and then tell the robot to retain the final version of the sequence so that it can be played back later from other interfaces, like the tablet
The exit transition state of the sequence.
Used in:
Status unknown; do not use
Sequence will be forgotten on reboot
A file for this sequence is stored on the robot; the sequence will be loaded to memory each time the robot boots
Sequence was built into the release and can't be deleted
Used in:
Used in:
Used in:
Parameters for moves that can go to either side.
Used in:
Used in:
Used in:
,Unused enum.
Start spot check joint calibration and camera checks.
Abort spot check joint calibration and camera check.
Revert joint calibration back to the previous values.
Used in:
Unknown
Request was accepted.
An error occurred.
If SpotCheck experienced an error, specific error details reported here. This reflects an error in the routine.
Used in:
Unused enum.
No error has occurred.
Unexpected motor power state transition.
Robot body is not flat on the ground.
Robot body is not close to a sitting pose
Timeout during loadcell calibration.
Error enabling motor power.
Timeout during endstop calibration.
Robot failed to stand.
Timeout during camera check.
Flat ground check failed.
Robot failed to power off.
Robot failed to revert calibration.
Robot failed to do flat ground kinematic calibration.
Timeout during gripper calibration.
Arm motion would cause collisions (eg. w/ a payload).
Timeout during arm joint check.
Used in:
Unused enum.
SpotCheck is aborted by the user.
SpotCheck is initializing.
Load cell calibration underway.
Endstop calibration underway.
Camera check underway.
Body pose routine underway.
Spot check successfully finished.
Reverting calibration to previous values.
Error occurred while running spotcheck. Inspect error for more info.
Waiting for user command.
Hip range of motion check underway.
Gripper calibration underway.
Sitting down after run.
Arm joint endstops and cross error check underway.
Used in:
The status for the start recording request.
Used in:
Status unknown; do not use.
The request succeeded and choreography has either started, or continued with an extended duration based on if a session_id was provided.
The provided recording_session_id is unknown: it must either be 0 (start a new recording log) or it can match the current recording session id returned by the most recent start recording request.
The Choreography Service's internal buffer is filled. It will record for a maximum of 5 minutes. It will stop recording, but save the recorded data until
Used in:
Which foot to use (FL = 1, FR = 2, HL = 3, HR = 4).
Offset of the foot from it's nominal position, in meters.
Should we use a second foot? (None = 0, FL = 1, FR = 2, HL = 3, HR = 4).
Where should the swing foot go? This vector should be described in a gravity-aligned body frame relative to the center-point of the swing. If set to {0,0,0}, uses the default swing path.
Parameters for altering swing. Note that these will have no effect if swing_waypoint is specified. As well, a zero (or nearly zero) value will be considered as an unspecified parameter.
meters
m/s
m/s
Should we mirror the offset for the second foot? Ignored if second_foot is set to None
*** Deprecation Warning *** DEPRECATED as of 2.3.0: The mirror field has been deprecated in favor for a more descriptive break down to mirror_x and mirror_y. The following field will be deprecated and moved to 'reserved' in a future release.
What fraction of the swing should be spent near the waypoint.
Should we touch the ground and come back rather than stepping to a new place?
Parameters specific to Sway move.
Used in:
How far to move up/down [m].
How far to move left/right [m].
How much to roll [rad].
What point on the robot's body should the swaying be centered at. For example, should the head move instead of the butt?
What style motion should we use?
How pronounced should the sway-style be? The value is on a scale from [0,1.0].
Should the robot hold previous values for the vertical, horizontal, and roll axes if the value is left unspecified (value of zero).
The type of motion used by the Sway sequence move.
Used in:
The type of swing height for a step.
Used in:
Invalid; do not use.
Low-stepping. Robot will try to only swing legs a few cm away from ground.
Default for most cases, use other values with caution.
High-stepping. Possibly useful with degraded vision operation.
Swing height is automatically adjusted depending on the current state
Used in:
Used in:
Ground contact parameters that describe the terrain.
Used in:
Terrain coefficient of friction user hint. This value must be positive and will be clamped if necessary on the robot side. Best suggested values lie in the range between 0.4 and 0.8 (which is the robot's default.)
*** Deprecation Warning *** DEPRECATED as of 3.0.0: The boolean field has been replaced by the field grated_surfaces_mode The following field will be deprecated and moved to 'reserved' in a future release.
The selected option for grated surfaces mode
Options for Grated Surfaces Mode. When Grated Surfaces Mode is on, the robot assumes the ground below it is made of grated metal or other repeated pattern. When on, the robot will make assumptions about the environment structure and more aggressively filter noise in perception data.
Used in:
Invalid; do not use.
Robot will automatically turn mode on or off
Parameters specific to turning.
Used in:
How far to turn, described in radians with a positive value representing a turn to the left.
Orientation to turn to, relative to the orientation at the start of the script. [rad]
Should we turn to a yaw in choreography sequence frame?
Swing parameters to describe the footstep pattern during the turning [height in meters]. Note, a zero (or nearly zero) value will be considered as an unspecified parameter.
Swing parameter to describe the foot's swing velocity during the turning [m/s]. Note, a zero (or nearly zero) value will be considered as an unspecified parameter.
How far to move relative to starting position. [m]
Where to move relative to position at start of script. [m]
Is motion specified relative to pose at start of dance?
*** Deprecation Warning *** DEPRECATED as of 3.0.0: The absolute field has been deprecated and split into the yaw_is_absolute and translation_is_absolute fields. The following field will be deprecated and moved to 'reserved' in a future release.
Parameters specific to twerking
Used in:
How far the robot should twerk in meters.
Used in:
Do not use.
Uploading + parsing the animated move succeeded.
The animated move is considered invalid, see the warnings.
Treated this message as a ping. Responding to demonstrate connectivity.
Used in:
The robot will rotate its body to the specified orientation (roll/pitch/yaw) [rad].
The positional offset to the robot's current location [m].
Go to an absolute position/orientation? Otherwise, relative to starting pose.
What frame is the motion specified in.
How the motion should be paced.
If we're using the dance frame, which one?