spot/choreography_params.proto

AnimateParams

Field Type Description
animation_name string The name of the animated move. There are no default values/bounds associated with this field.
body_entry_slices google.protobuf.DoubleValue How many slices to smoothly transition from previous pose to animation.
body_exit_slices google.protobuf.DoubleValue How many slices to return from animation to nominal pose. Zero indicates to keep final animated pose.
translation_multiplier bosdyn.api.Vec3Value Multiplier for animated translation by axis to exaggerate or suppress motion along specific axes.
rotation_multiplier EulerZYXValue Multiplier for the animated orientation by axis to exaggerate or suppress motion along specific axes.
arm_entry_slices google.protobuf.DoubleValue How many slices to smoothly transition from previous pose to animation.
shoulder_0_offset google.protobuf.DoubleValue Joint angle offsets in radians for the arm joints.
shoulder_1_offset google.protobuf.DoubleValue
elbow_0_offset google.protobuf.DoubleValue
elbow_1_offset google.protobuf.DoubleValue
wrist_0_offset google.protobuf.DoubleValue
wrist_1_offset google.protobuf.DoubleValue
gripper_offset google.protobuf.DoubleValue
speed google.protobuf.DoubleValue How fast to playback. 1.0 is normal speed. larger is faster.
offset_slices google.protobuf.DoubleValue How late into the nominal script to start.
gripper_multiplier google.protobuf.DoubleValue Multiply all gripper angles by this value.
gripper_strength_fraction google.protobuf.DoubleValue How hard the gripper can squeeze. Fraction of full strength.
arm_dance_frame_id google.protobuf.Int32Value Which dance frame to use as a reference for workspace arm moves. Including this parameter overrides the animation frame.
body_tracking_stiffness google.protobuf.DoubleValue 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.

AnimatedCycleParams

Field Type Description
animation_name google.protobuf.StringValue
enable_animation_duration google.protobuf.BoolValue
enable_leg_timing google.protobuf.BoolValue
enable_stance_shape google.protobuf.BoolValue

ArmMoveParams

Parameters specific to ArmMove move.

Field Type Description
shoulder_0 google.protobuf.DoubleValue Joint angles in radians for the arm joints.
shoulder_1 google.protobuf.DoubleValue
elbow_0 google.protobuf.DoubleValue
elbow_1 google.protobuf.DoubleValue
wrist_0 google.protobuf.DoubleValue
wrist_1 google.protobuf.DoubleValue
easing Easing How the motion should be paced.
gripper google.protobuf.DoubleValue Movement for the gripper.

BodyHoldParams

Parameters specific to the BodyHold move.

Field Type Description
rotation EulerZYXValue The robot will rotate its body to the specified orientation (roll/pitch/yaw) [rad].
translation bosdyn.api.Vec3Value The positional offset to the robot's current location [m].
entry_slices google.protobuf.DoubleValue How many "slices" (beats or sub-beats) are allowed before reaching the desired pose.
exit_slices google.protobuf.DoubleValue How many "slices" (beats or sub-beats) are allowed for the robot to return to the original pose.

BourreeParams

Parameters for the Bourree move.

Field Type Description
velocity bosdyn.api.Vec2Value The speed at which we should bourree [m/s]. X is forward. Y is left.
yaw_rate google.protobuf.DoubleValue How fast the bourree should turn [rad/s].
stance_length google.protobuf.DoubleValue How far apart front and hind feet should be. [m]

ButtCircleParams

Parameters specific to the ButtCircle DanceMove.

Field Type Description
radius google.protobuf.DoubleValue How big a circle the robutt will move in. Described in meters.
beats_per_circle google.protobuf.DoubleValue The number of beats that elapse while performing the butt circle.
number_of_circles google.protobuf.DoubleValue The number of circles that will be performed. If non-zero, takes precedence over beats_per_circle.
pivot Pivot The pivot point the butt circles should be centered around.
clockwise google.protobuf.BoolValue Which way to rotate.
starting_angle google.protobuf.DoubleValue Where to start. Zero is up.

ChickenHeadParams

Parameters specific to the chicken head move.

Field Type Description
bob_magnitude bosdyn.api.Vec3Value Bobs the head in this direction in the robot footprint frame.
beats_per_cycle google.protobuf.Int32Value How fast to bob the head.
follow google.protobuf.BoolValue Should we move the frame when the robot steps?

ClapParams

Parameters specific to clapping.

Field Type Description
direction bosdyn.api.Vec3Value Direction in a gravity-aligned body frame of clapping motion. A typical value for the location is (0, 1, 0).
location bosdyn.api.Vec3Value Location in body frame of the clap. A typical value for the location is (0.4, 0, -0.5).
speed google.protobuf.DoubleValue Speed of the clap [m/s].
clap_distance google.protobuf.DoubleValue How far apart the limbs are before clapping [m].

Color

Field Type Description
red google.protobuf.DoubleValue
green google.protobuf.DoubleValue
blue google.protobuf.DoubleValue

CrawlParams

Parameters for the robot’s crawling gait.

Field Type Description
swing_slices google.protobuf.DoubleValue The number of slices (beats/sub-beats) the duration of a leg swing in the crawl gait should be.
velocity bosdyn.api.Vec2Value The speed at which we should crawl [m/s]. X is forward. Y is left.
stance_width google.protobuf.DoubleValue The distance between the robot's left and right feet [m].
stance_length google.protobuf.DoubleValue The distance between the robot's front and back feet [m].

CustomGaitCommand

Field Type Description
drive_velocity_body bosdyn.api.SE2Velocity Locomotion velocity in the horizontal plane in robot body frame. (m/s, m/s, rad/s)
finished bool When true, robot will transition to a stand, then continue the sequence. Until then, the sequence will keep looping through this move.
body_translation_offset bosdyn.api.Vec3 How much to offset the body pose. Additive with other offsets.

Meters. | | body_orientation_offset | EulerZYX | Radians. |

CustomGaitCommandLimits

Field Type Description
maximum_drive_velocity_body bosdyn.api.SE2Velocity Maximum absolute value of locomotion velocity in the horizontal plane in robot body frame. (m/s, m/s, rad/s)
maximum_body_translation_offset bosdyn.api.Vec3 Maximum absolute value of the body offsets.

Meters. | | maximum_body_orientation_offset | EulerZYX | Radians. |

CustomGaitParams

Field Type Description
max_velocity bosdyn.api.Vec2Value Maximum steering commands that will be accepted.
max_yaw_rate google.protobuf.DoubleValue
acceleration_scaling google.protobuf.DoubleValue How much to limit steering acceleration. 1 is normal. Smaller is less acceleration.
cycle_duration google.protobuf.DoubleValue Gait pattern. When to liftoff and touchdown each leg.
fl_swing SwingPhases
two_fl_swings google.protobuf.BoolValue
second_fl_swing SwingPhases
fr_swing SwingPhases
two_fr_swings google.protobuf.BoolValue
second_fr_swing SwingPhases
hl_swing SwingPhases
two_hl_swings google.protobuf.BoolValue
second_hl_swing SwingPhases
hr_swing SwingPhases
two_hr_swings google.protobuf.BoolValue
second_hr_swing SwingPhases
show_stance_shape google.protobuf.BoolValue Relative positions of feet.
stance_shape StanceShape
com_height google.protobuf.DoubleValue Constant posture. For a phase-dependent posture, combine with a Body move.
body_translation_offset bosdyn.api.Vec3Value
body_rotation_offset EulerZYXValue
low_speed_body_fraction google.protobuf.DoubleValue
general_swing_params SwingParams 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.
use_fl_swing_params google.protobuf.BoolValue Individual legs can have their own parameters or use the general swing parameters.
fl_swing_params SwingParams
use_fr_swing_params google.protobuf.BoolValue
fr_swing_params SwingParams
use_hl_swing_params google.protobuf.BoolValue
hl_swing_params SwingParams
use_hr_swing_params google.protobuf.BoolValue
hr_swing_params SwingParams
stand_in_place google.protobuf.BoolValue Stand rather than stepping in place when not moving.
standard_final_stance google.protobuf.BoolValue Go back to a standard rectangular stance when ending the gait. Otherwise maintains the customized stance shape.
show_stability_params google.protobuf.BoolValue Parameters that impact the stability of the gait rather than its appearance.
mu google.protobuf.DoubleValue Friction coefficient between the feet and the ground.
timing_stiffness google.protobuf.DoubleValue 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).
step_position_stiffness google.protobuf.DoubleValue 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_perception_obstacle_avoidance google.protobuf.BoolValue Enable/disable various aspects of perception.
obstacle_avoidance_padding google.protobuf.DoubleValue
enable_perception_terrain_height google.protobuf.BoolValue
enable_perception_step_placement google.protobuf.BoolValue
maximum_stumble_distance google.protobuf.DoubleValue How far the robot should stumble before giving up and freezing.
trip_sensitivity google.protobuf.DoubleValue 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.
animated_cycle_params AnimatedCycleParams Using an animated cycle to define the gait style

EulerRateZYXValue

Euler Angle rates (yaw->pitch->roll) vector that uses wrapped values so we can tell which elements are set.

Field Type Description
roll google.protobuf.DoubleValue
pitch google.protobuf.DoubleValue
yaw google.protobuf.DoubleValue

EulerZYX

Euler Angle (yaw->pitch->roll) vector.

Field Type Description
roll double
pitch double
yaw double

EulerZYXValue

Euler Angle (yaw->pitch->roll) vector that uses wrapped values so we can tell which elements are set.

Field Type Description
roll google.protobuf.DoubleValue
pitch google.protobuf.DoubleValue
yaw google.protobuf.DoubleValue

FadeColorParams

Field Type Description
top_color Color
bottom_color Color
fade_in_slices google.protobuf.DoubleValue
fade_out_slices google.protobuf.DoubleValue

FidgetStandParams

Field Type Description
preset FidgetStandParams.FidgetPreset
min_gaze_pitch google.protobuf.DoubleValue
max_gaze_pitch google.protobuf.DoubleValue
gaze_mean_period google.protobuf.DoubleValue
gaze_center_cfp bosdyn.api.Vec3Value
shift_mean_period google.protobuf.DoubleValue
shift_max_transition_time google.protobuf.DoubleValue
breath_min_z google.protobuf.DoubleValue
breath_max_z google.protobuf.DoubleValue
breath_max_period google.protobuf.DoubleValue
leg_gesture_mean_period google.protobuf.DoubleValue
gaze_slew_rate google.protobuf.DoubleValue
gaze_position_generation_gain bosdyn.api.Vec3Value
gaze_roll_generation_gain google.protobuf.DoubleValue

Figure8Params

Field Type Description
height google.protobuf.DoubleValue
width google.protobuf.DoubleValue
beats_per_cycle google.protobuf.DoubleValue

FrameSnapshotParams

Field Type Description
frame_id google.protobuf.Int32Value
fiducial_number google.protobuf.Int32Value
include_front_left_leg FrameSnapshotParams.Inclusion
include_front_right_leg FrameSnapshotParams.Inclusion
include_hind_left_leg FrameSnapshotParams.Inclusion
include_hind_right_leg FrameSnapshotParams.Inclusion
compensated google.protobuf.BoolValue

FrontUpParams

Parameters specific to FrontUp move.

Field Type Description
mirror google.protobuf.BoolValue Should we raise the hind feet instead.

GotoParams

Field Type Description
absolute_position bosdyn.api.Vec2Value
absolute_yaw google.protobuf.DoubleValue
step_position_stiffness google.protobuf.DoubleValue
duty_cycle google.protobuf.DoubleValue
link_to_next google.protobuf.BoolValue Should we combine with the next move into a smooth trajectory.

GripperParams

Parameters for open/close of gripper.

Field Type Description
angle google.protobuf.DoubleValue Angle in radians at which the gripper is open. Note that a 0 radian angle correlates to completely closed.
speed google.protobuf.DoubleValue Speed in m/s at which the gripper should open/close to achieve the desired angle.

HopParams

Parameters specific to Hop move.

Field Type Description
velocity bosdyn.api.Vec2Value The velocity of the hop gait (X is forward; y is left)[m/s].
yaw_rate google.protobuf.DoubleValue How fast the hop gait should turn [rad/s].
stand_time google.protobuf.DoubleValue How long the robot should stand in between each hop.

IndependentColorParams

Field Type Description
top_left Color
upper_mid_left Color
lower_mid_left Color
bottom_left Color
top_right Color
upper_mid_right Color
lower_mid_right Color
bottom_right Color
fade_in_slices google.protobuf.DoubleValue
fade_out_slices google.protobuf.DoubleValue

JumpParams

Parameters for the robot making a jump.

Field Type Description
yaw google.protobuf.DoubleValue The amount in radians that the robot will turn while in the air.
flight_slices google.protobuf.DoubleValue The amount of time in slices (beats) that the robot will be in the air.
stance_width google.protobuf.DoubleValue The distance between the robot's left and right feet [m].
stance_length google.protobuf.DoubleValue The distance between the robot's front and back feet [m].
translation bosdyn.api.Vec2Value How far the robot should jump [m].
split_fraction google.protobuf.DoubleValue How much it should lo/td the first pair of lets ahead of the other pair. In fraction of flight time.
lead_leg_pair JumpParams.Lead
yaw_is_absolute google.protobuf.BoolValue Should we turn to a yaw in choreography sequence frame?
translation_is_absolute google.protobuf.BoolValue Should we translate in choreography sequence frame?
absolute_yaw google.protobuf.DoubleValue The direction the robot should face upon landing relative to pose at the start of the dance. [rad]
absolute_translation bosdyn.api.Vec2Value Where the robot should land relative to the pose at the start of the dance. [m]
swing_height google.protobuf.DoubleValue
absolute google.protobuf.BoolValue 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.

KneelCircleParams

Parameters specific to the kneel_circles move.

Field Type Description
location bosdyn.api.Vec3Value Location in body frame of the circle center. A typical value for the location is (0.4, 0, -0.5).
beats_per_circle google.protobuf.Int32Value How beats per circle. One or two are reasonable values.
number_of_circles google.protobuf.DoubleValue How many circles to perform. Mutually exclusive with beats_per_circle.
offset google.protobuf.DoubleValue How far apart the feet are when circling [m].
radius google.protobuf.DoubleValue Size of the circles [m].
reverse google.protobuf.BoolValue Which way to circle.

KneelLegMove2Params

Parameters specific to KneelLegMove2 move.

Field Type Description
left_hip_x google.protobuf.DoubleValue Joint angles of the front left leg in radians.
left_hip_y google.protobuf.DoubleValue
left_knee google.protobuf.DoubleValue
right_hip_x google.protobuf.DoubleValue Joint angles of the front right leg in radians.
right_hip_y google.protobuf.DoubleValue
right_knee google.protobuf.DoubleValue
easing Easing How the motion should be paced.
link_to_next google.protobuf.BoolValue Should we combine with the next move into a smooth trajectory.

KneelLegMoveParams

Parameters specific to KneelLegMove move.

Field Type Description
hip_x google.protobuf.DoubleValue Joint angles of the left front leg in radians. If mirrored, the joints will be flipped for the other leg.
hip_y google.protobuf.DoubleValue
knee google.protobuf.DoubleValue
mirror google.protobuf.BoolValue If mirrored is true, the joints will be flipped for the leg on the other side (right vs left) of the body.
easing Easing How the motion should be paced.

LegJointParams

Field Type Description
fl_hx google.protobuf.DoubleValue
fl_hy google.protobuf.DoubleValue
fl_kn google.protobuf.DoubleValue
fr_hx google.protobuf.DoubleValue
fr_hy google.protobuf.DoubleValue
fr_kn google.protobuf.DoubleValue
hl_hx google.protobuf.DoubleValue
hl_hy google.protobuf.DoubleValue
hl_kn google.protobuf.DoubleValue
hr_hx google.protobuf.DoubleValue
hr_hy google.protobuf.DoubleValue
hr_kn google.protobuf.DoubleValue

Pace2StepParams

Parameters specific to pace translation.

Field Type Description
motion bosdyn.api.Vec2Value How far to move relative to starting position. [m]
absolute_motion bosdyn.api.Vec2Value Where to move relative to position at start of script. [m]
motion_is_absolute google.protobuf.BoolValue Is motion specified relative to pose at start of dance?
swing_height google.protobuf.DoubleValue 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.
swing_velocity google.protobuf.DoubleValue
yaw google.protobuf.DoubleValue How far to turn, described in radians with a positive value representing a turn to the left.
absolute_yaw google.protobuf.DoubleValue Orientation to turn to, relative to the orientation at the start of the script. [rad]
yaw_is_absolute google.protobuf.BoolValue Should we turn to a yaw in choreography sequence frame?
absolute google.protobuf.BoolValue 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.

RandomRotateParams

Parameters specific to the RandomRotate move.

Field Type Description
amplitude EulerZYXValue The amplitude [rad] of the rotation in each axis.
speed EulerRateZYXValue The speed [rad/s] of the motion in each axis.
speed_variation google.protobuf.DoubleValue The amount of variation allowed in the speed of the random rotations [m/s]. Note, this must be a positive value.
num_speed_tiers google.protobuf.Int32Value 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 choosen and performed for each axis.
tier_variation google.protobuf.DoubleValue How much can the output speed vary from the choosen tiered speed.

RippleColorParams

Field Type Description
main Color
secondary Color
pattern RippleColorParams.Pattern
light_side RippleColorParams.LightSide
increment_slices google.protobuf.DoubleValue

RotateBodyParams

Parameters for the robot rotating the body.

Field Type Description
rotation EulerZYXValue The robot will rotate its body to the specified orientation (roll/pitch/yaw).
return_to_start_pose google.protobuf.BoolValue 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.

RunningManParams

Parameters specific to RunningMan move.

Field Type Description
velocity bosdyn.api.Vec2Value
swing_height google.protobuf.DoubleValue How high to pick up the forward-moving feet [m].
spread google.protobuf.DoubleValue How far to spread the contralateral pair of feet [m].
reverse google.protobuf.BoolValue Should we reverse the motion?
pre_move_cycles google.protobuf.Int32Value How many full running man cycles should the robot complete in place before starting to move with the desired velocity.
speed_multiplier google.protobuf.DoubleValue Do the move at some multiple of the dance cadence.
duty_cycle google.protobuf.DoubleValue What fraction of the time to have feet on the ground.
com_height google.protobuf.DoubleValue How high to hold the center of mass above the ground on average.

SetColorParams

Field Type Description
left_color Color
right_same_as_left google.protobuf.BoolValue
right_color Color
fade_in_slices google.protobuf.DoubleValue
fade_out_slices google.protobuf.DoubleValue

SideParams

Parameters for moves that can go to either side.

Field Type Description
side SideParams.Side

StanceShape

Field Type Description
length google.protobuf.DoubleValue
width google.protobuf.DoubleValue
front_wider_than_hind google.protobuf.DoubleValue
left_longer_than_right google.protobuf.DoubleValue
left_forward_of_right google.protobuf.DoubleValue

StepParams

Field Type Description
foot Leg Which foot to use (FL = 1, FR = 2, HL = 3, HR = 4).
offset bosdyn.api.Vec2Value Offset of the foot from it's nominal position, in meters.
second_foot Leg Should we use a second foot? (None = 0, FL = 1, FR = 2, HL = 3, HR = 4).
swing_waypoint bosdyn.api.Vec3Value Where should the swing foot go? This vector should be described in a gravity-aligned body frame relative to the centerpoint of the swing. If set to {0,0,0}, uses the default swing path.
swing_height google.protobuf.DoubleValue 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 | | liftoff_velocity | google.protobuf.DoubleValue | m/s | | touchdown_velocity | google.protobuf.DoubleValue | m/s | | mirror_x | google.protobuf.BoolValue | Should we mirror the offset for the second foot? Ignored if second_foot is set to None | | mirror_y | google.protobuf.BoolValue | | | mirror | google.protobuf.BoolValue | 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. | | waypoint_dwell | google.protobuf.DoubleValue | What fraction of the swing should be spent near the waypoint. | | touch | google.protobuf.BoolValue | Should we touch the ground and come back rather than stepping to a new place? | | touch_offset | bosdyn.api.Vec2Value | |

SwayParams

Parameters specific to Sway move.

Field Type Description
vertical google.protobuf.DoubleValue How far to move up/down [m].
horizontal google.protobuf.DoubleValue How far to move left/right [m].
roll google.protobuf.DoubleValue How much to roll [rad].
pivot Pivot What point on the robot's body should the swaying be centered at. For example, should the head move instead of the butt?
style SwayParams.SwayStyle What style motion should we use?
pronounced google.protobuf.DoubleValue How pronounced should the sway-style be? The value is on a scale from [0,1.0].
hold_zero_axes google.protobuf.BoolValue Should the robot hold previous values for the vertical, horizontal, and roll axes if the value is left unspecified (value of zero).

SwingParams

Field Type Description
height google.protobuf.DoubleValue
liftoff_speed google.protobuf.DoubleValue
vertical_speed google.protobuf.DoubleValue
vertical_acceleration google.protobuf.DoubleValue
overlay_outside google.protobuf.DoubleValue
overlay_forward google.protobuf.DoubleValue
low_speed_fraction google.protobuf.DoubleValue

SwingPhases

Field Type Description
liftoff_phase google.protobuf.DoubleValue
touchdown_phase google.protobuf.DoubleValue

TurnParams

Parameters specific to turning.

Field Type Description
yaw google.protobuf.DoubleValue How far to turn, described in radians with a positive value representing a turn to the left.
absolute_yaw google.protobuf.DoubleValue Orientation to turn to, relative to the orientation at the start of the script. [rad]
yaw_is_absolute google.protobuf.BoolValue Should we turn to a yaw in choreography sequence frame?
swing_height google.protobuf.DoubleValue 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_velocity google.protobuf.DoubleValue 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.
motion bosdyn.api.Vec2Value How far to move relative to starting position. [m]
absolute_motion bosdyn.api.Vec2Value Where to move relative to position at start of script. [m]
motion_is_absolute google.protobuf.BoolValue Is motion specified relative to pose at start of dance?
absolute google.protobuf.BoolValue 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.

TwerkParams

Parameters specific to twerking

Field Type Description
height google.protobuf.DoubleValue How far the robot should twerk in meters.

WorkspaceArmMoveParams

Field Type Description
rotation EulerZYXValue The robot will rotate its body to the specified orientation (roll/pitch/yaw) [rad].
translation bosdyn.api.Vec3Value The positional offset to the robot's current location [m].
absolute google.protobuf.BoolValue Go to an absolute position/orientation? Otherwise, relative to starting pose.
frame ArmMoveFrame What frame is the motion specified in.
easing Easing How the motion should be paced.
dance_frame_id google.protobuf.Int32Value If we're using the dance frame, which one?

ArmMoveFrame

Name Number Description
ARM_MOVE_FRAME_UNKNOWN 0
ARM_MOVE_FRAME_CENTER_OF_FOOTPRINT 1
ARM_MOVE_FRAME_HAND 2
ARM_MOVE_FRAME_BODY 3
ARM_MOVE_FRAME_SHOULDER 4
ARM_MOVE_FRAME_SHADOW 5
ARM_MOVE_FRAME_DANCE 6

Easing

Enum to describe the type of easing to perform for the slices at either (or both) the beginning and end of a move.

Name Number Description
EASING_UNKNOWN 0
EASING_LINEAR 1
EASING_QUADRATIC_INPUT 2
EASING_QUADRATIC_OUTPUT 3
EASING_QUADRATIC_IN_OUT 4
EASING_CUBIC_INPUT 5
EASING_CUBIC_OUTPUT 6
EASING_CUBIC_IN_OUT 7
EASING_EXPONENTIAL_INPUT 8
EASING_EXPONENTIAL_OUTPUT 9
EASING_EXPONENTIAL_IN_OUT 10

FidgetStandParams.FidgetPreset

Name Number Description
PRESET_UNKNOWN 0
PRESET_CUSTOM 1
PRESET_INTEREST 2
PRESET_PLAYFUL 3
PRESET_FEAR 4
PRESET_NERVOUS 5
PRESET_EXHAUSTED 6

FrameSnapshotParams.Inclusion

Name Number Description
INCLUSION_UNKNOWN 0
INCLUSION_IF_STANCE 1
INCLUSION_INCLUDED 2
INCLUSION_EXCLUDED 3

JumpParams.Lead

If split_fraction is non-zero, which legs to lift first.

Name Number Description
LEAD_UNKNOWN 0
LEAD_AUTO 1
LEAD_FRONT 2
LEAD_HIND 3
LEAD_LEFT 4
LEAD_RIGHT 5

LedLight

Name Number Description
LED_LIGHT_UNKNOWN 0
LED_LIGHT_LEFT1 1
LED_LIGHT_LEFT2 2
LED_LIGHT_LEFT3 3
LED_LIGHT_LEFT4 4
LED_LIGHT_RIGHT1 5
LED_LIGHT_RIGHT2 6
LED_LIGHT_RIGHT3 7
LED_LIGHT_RIGHT4 8

Leg

Enum to describe which leg is being referenced in specific choreography sequence moves.

Name Number Description
LEG_UNKNOWN 0
LEG_FRONT_LEFT 1
LEG_FRONT_RIGHT 2
LEG_HIND_LEFT 3
LEG_HIND_RIGHT 4
LEG_NO_LEG -1

Pivot

Enum for the pivot point for certain choreography sequence moves.

Name Number Description
PIVOT_UNKNOWN 0
PIVOT_FRONT 1
PIVOT_HIND 2
PIVOT_CENTER 3

RippleColorParams.LightSide

Name Number Description
LIGHT_SIDE_UNKNOWN 0
LIGHT_SIDE_LEFT 1
LIGHT_SIDE_RIGHT 2
LIGHT_SIDE_BOTH_IN_SEQUENCE 3
LIGHT_SIDE_BOTH_MATCHING 4

RippleColorParams.Pattern

Name Number Description
PATTERN_UNKNOWN 0
PATTERN_FLASHING 1
PATTERN_SNAKE 2
PATTERN_ALTERNATE_COLORS 3
PATTERN_FINE_GRAINED_ALTERNATE_COLORS 4

SideParams.Side

Name Number Description
SIDE_UNKNOWN 0
SIDE_LEFT 1
SIDE_RIGHT 2

SwayParams.SwayStyle

The type of motion used by the Sway sequence move.

Name Number Description
SWAY_STYLE_UNKNOWN 0
SWAY_STYLE_STANDARD 1
SWAY_STYLE_FAST_OUT 2
SWAY_STYLE_FAST_RETURN 3
SWAY_STYLE_SQUARE 4
SWAY_STYLE_SPIKE 5
SWAY_STYLE_PLATEAU 6

spot/choreography_sequence.proto

ActiveMove

Field Type Description
move MoveParams Any parameters that had to be adjusted into the legal range will have their adjusted values.
custom_gait_command_limits CustomGaitCommandLimits

AnimateArm

Field Type Description
joint_angles ArmJointAngles Full arm joint angle specification.
hand_pose AnimateArm.HandPose The hand position in the animation frame

AnimateArm.HandPose

An SE3 Pose for the hand where orientation is specified using either a quaternion or euler angles

Field Type Description
position bosdyn.api.Vec3Value
euler_angles EulerZYXValue The hand's orientation described with euler angles (yaw, pitch, roll).
quaternion bosdyn.api.Quaternion The hand's orientation described with a quaternion.

AnimateBody

The AnimateBody keyframe describes the body’s position and orientation. At least one dimension of the body must be specified.

Field Type Description
body_pos bosdyn.api.Vec3Value The body position in the animation frame.
com_pos bosdyn.api.Vec3Value The body's center of mass position in the animation frame.
euler_angles EulerZYXValue The body's orientation described with euler angles (yaw, pitch, roll).
quaternion bosdyn.api.Quaternion The body's orientation described with a quaternion.

AnimateGripper

Field Type Description
gripper_angle google.protobuf.DoubleValue

AnimateLegs

The AnimateLegs keyframe describes each leg using either joint angles or the foot position.

Field Type Description
fl AnimateSingleLeg Front left leg.
fr AnimateSingleLeg Front right leg.
hl AnimateSingleLeg Hind left leg.
hr AnimateSingleLeg Hind right leg.

AnimateSingleLeg

A single leg keyframe to describe the leg motion.

Field Type Description
joint_angles LegJointAngles Full leg joint angle specification.
foot_pos bosdyn.api.Vec3Value The foot position of the leg in the animation frame.
stance google.protobuf.BoolValue 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.

Animation

Represents an animated dance move that can be used whithin choreographies after uploading.

Field Type Description
name string The name of the animated move, which is how it will be referenced in choreographies.
animation_keyframes AnimationKeyframe 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.
controls_arm bool Indicators as to which parts of the robot that the move controls.
controls_legs bool
controls_body bool
controls_gripper bool
track_swing_trajectories bool Track animated swing trajectories. Otherwise, takes standard swings between animated liftoff and touchdown locations.
assume_zero_roll_and_pitch bool 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.
arm_playback Animation.ArmPlayback
bpm double Optional bpm that the animation is successful at.
retime_to_integer_slices bool 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.
minimum_parameters AnimateParams 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.
default_parameters AnimateParams
maximum_parameters AnimateParams
truncatable bool Indicates if the animated moves can be shortened (the animated move will be cut off). Not supported for leg moves.
extendable bool Indicates if the animated moves can be stretched (animated move will loop). Not supported for leg moves.
neutral_start bool Indicates if the move should start in a neutral stand position.
precise_steps bool Step exactly at the animated locations, even at the expense of balance. By default, the optimizer may adjust step locations slightly.
precise_timing bool 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.
timing_adjustability double 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.
arm_required bool If set true, this animation will not run unless the robot has an arm.
arm_prohibited bool If set true, this animation will not run unless the robot has no arm.
no_looping bool If the animation completes before the move's duration, freeze rather than looping.
starts_sitting bool If the animation starts from a sit pose. Default starting pose is stand.
custom_gait_cycle bool If true, this animation can be used as direct input to custom gait to define the gait style

AnimationKeyframe

Field Type Description
time double Time from the start of the animation for this frame.
gripper AnimateGripper Different body parts the animated move can control. It can control multiple body parts at once.
arm AnimateArm
body AnimateBody
legs AnimateLegs

ArmJointAngles

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.

Field Type Description
shoulder_0 google.protobuf.DoubleValue
shoulder_1 google.protobuf.DoubleValue
elbow_0 google.protobuf.DoubleValue
elbow_1 google.protobuf.DoubleValue
wrist_0 google.protobuf.DoubleValue
wrist_1 google.protobuf.DoubleValue

ChoreographerDisplayInfo

Information for the Choreographer to display.

Field Type Description
color ChoreographerDisplayInfo.Color
markers int32 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.
description string Textual description to be displayed in the GUI.
image string Image path (local to the UI) to display as an icon. May be an animated gif.
category ChoreographerDisplayInfo.Category

ChoreographerDisplayInfo.Color

Color of the object. Set it to override the default category color.

Field Type Description
r int32 RGB values for color ranging from [0,255].
g int32
b int32
a double Alpha value for the coloration ranges from [0,1].

ChoreographerSave

Describes the metadata and information only used by the Choreographer GUI, which isn’t used in the API

Field Type Description
choreography_sequence ChoreographySequence The main ChoreographySequence that makes up the dance and is sent to the robot.
music_file string If specified this is the UI local path of the music to load.
music_start_slice double UI specific member that describes exactly when the music should start, in slices. This is for time sync issues.
choreography_start_slice double The start slice for the choreographer save.

ChoreographyCommandRequest

Field Type Description
header bosdyn.api.RequestHeader Common request header
commands MoveCommand Commands intended for individual moves. Repeated because multiple moves may be playing simultaneously and we may want to command multiple of them.
lease bosdyn.api.Lease The Lease to show ownership of the robot body.
command_end_time google.protobuf.Timestamp When the commands expire. In the robot's clock.

ChoreographyCommandResponse

Field Type Description
header bosdyn.api.ResponseHeader Common response header
lease_use_result bosdyn.api.LeaseUseResult
status ChoreographyCommandResponse.Status One status for each command sent.

ChoreographyInfo

Describes metadata for the Choreography sequence that can be used for a number of different UIs

Field Type Description
labels string the list of user assigned categories that the sequence belongs to

ChoreographySequence

Represents a particular choreography sequence, made up of MoveParams.

Field Type Description
name string Display name or file name associated with the choreography sequence.
slices_per_minute double Number of slices per minute in the choreography sequence. Typically a slice will correspond to 1/4 a beat.
moves MoveParams All of the moves in this choreography sequence.
choreography_info ChoreographyInfo Metadata associated with the sequence.
entrance_state MoveInfo.TransitionState Can be used to specify an explicit entrance_state in the case where the first legs-track move accepts multiple entrace_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.

ChoreographyStateLog

Field Type Description
key_frames LoggedStateKeyFrame 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.

ChoreographyStatusRequest

Field Type Description
header bosdyn.api.RequestHeader Common request header

ChoreographyStatusResponse

Field Type Description
header bosdyn.api.ResponseHeader Common response header
status ChoreographyStatusResponse.Status
execution_id int32 If dancing (or preparing to dance), the unique execution_id matching the one from ExecuteChoreographyResponse. If not dancing, 0.
current_slice double Where we are in the script. (slice = 1/4 beat; standard unit of "time" within Choreography)
active_moves ActiveMove All of the moves currently executing.
sequence_slices int32 Length of the current sequence.
sequence_slices_per_minute double Cadence of the current sequence.
validity_time google.protobuf.Timestamp When this was true in robot time.

ClearAllSequenceFilesRequest

Reset to a clean slate with no retained files by deleting all non-permanent choreography related files

Field Type Description
header bosdyn.api.RequestHeader Common request header

ClearAllSequenceFilesResponse

Field Type Description
header bosdyn.api.ResponseHeader Common response header.
status ClearAllSequenceFilesResponse.Status

DeleteSequenceRequest

Delete the retained file for a choreography sequence so the sequence will be forgotten on reboot

Field Type Description
header bosdyn.api.RequestHeader Common request header
sequence_name string Name of the sequence to delete, sequence will be forgotten on the next reboot

DeleteSequenceResponse

Field Type Description
header bosdyn.api.ResponseHeader Common response header.
status DeleteSequenceResponse.Status

DownloadRobotStateLogRequest

Field Type Description
header bosdyn.api.RequestHeader Common request header
log_type DownloadRobotStateLogRequest.LogType Which data should we download.

DownloadRobotStateLogResponse

Field Type Description
header bosdyn.api.ResponseHeader Common response header
status DownloadRobotStateLogResponse.Status Return status for the request.
chunk bosdyn.api.DataChunk 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.

ExecuteChoreographyRequest

Field Type Description
header bosdyn.api.RequestHeader Common request header
choreography_sequence_name string The string name of the ChoreographySequence to use.
start_time google.protobuf.Timestamp 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.
choreography_starting_slice double The slice (betas/sub-beats) that the choreography should begin excution at.
lease bosdyn.api.Lease The Lease to show ownership of the robot body.

ExecuteChoreographyResponse

Field Type Description
header bosdyn.api.ResponseHeader Common response header
lease_use_result bosdyn.api.LeaseUseResult
status ExecuteChoreographyResponse.Status
execution_id int32 Unique ID for the execution. Will increment whenever an ExecuteChoreographRequest is received. Will reset upon robot boot.

LegJointAngles

Descprition of each leg joint angle (hip x/y and knee) in radians.

Field Type Description
hip_x double
hip_y double
knee double

ListAllMovesRequest

Request a list of all possible moves and the associated parameters (min/max values).

Field Type Description
header bosdyn.api.RequestHeader Common request header

ListAllMovesResponse

Response for ListAllMoves that defines the list of available moves and their parameter types.

Field Type Description
header bosdyn.api.ResponseHeader Common response header
moves MoveInfo List of moves that the robot knows about.
move_param_config string A copy of the MoveParamsConfig.txt that the robot is using.

ListAllSequencesRequest

Request a list of all playable choreography sequences that the robot knows about

Field Type Description
header bosdyn.api.RequestHeader Common request header

ListAllSequencesResponse

Field Type Description
header bosdyn.api.ResponseHeader Common response header.
known_sequences string DEPRECATED as of 3.2.0: The string list of known sequence names has been deprecated and replaced by the repeated field sequence_info.
sequence_info SequenceInfo List of choreography sequences the robot knows about.

LoggedFootContacts

Field Type Description
fr_contact bool Boolean indicating whether or not the robot's foot is in contact with the ground.
fl_contact bool
hr_contact bool
hl_contact bool

LoggedJoints

Field Type Description
fl LegJointAngles front left leg joint angles.
fr LegJointAngles front right leg joint angles.
hl LegJointAngles hind left leg joint angles.
hr LegJointAngles hind right leg joint angles.
arm ArmJointAngles Full set of joint angles for the arm and gripper.
gripper_angle google.protobuf.DoubleValue

LoggedStateKeyFrame

Field Type Description
joint_angles LoggedJoints Full set of joint angles for the robot.
foot_contact_state LoggedFootContacts Foot contacts for the robot.
animation_tform_body bosdyn.api.SE3Pose 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.
timestamp google.protobuf.Timestamp The timestamp (in robot time) for the key frame.

ModifyChoreographyInfoRequest

Edit the metadata of a choreography sequence and update any retained files for that sequence with the new metadata

Field Type Description
header bosdyn.api.RequestHeader Common request header
sequence_name string Name of the sequence to be modified
add_labels string Labels to be added to the sequence's metadata
remove_labels string Labels to be removed from the sequence's metadata

ModifyChoreographyInfoResponse

Field Type Description
header bosdyn.api.ResponseHeader Common response header.
status ModifyChoreographyInfoResponse.Status

MoveCommand

Either, both, or neither of move_type and move_id can be used to specify which move this command is intended for.

Field Type Description
move_type string Name of the move type this command is intended for.
move_id int32 ID of the move this command is intended for.
custom_gait_command CustomGaitCommand

MoveInfo

Defines properties of a choreography move.

Field Type Description
name string Unique ID of the move type.
move_length_slices int32 The duration of this move in slices (usually 1/4 beats).
move_length_time double The duration of this move in seconds. If specified, overrides move_length_slices.
is_extendable bool If true, the duration may be adjusted from the default specified by move_length_slices or move_length_time.
min_move_length_slices int32 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.
max_move_length_slices int32
min_time double Bounds on the duration in time. These apply to extendable moves, but may also override move_length_slices for some BPM.
max_time double
entrance_states MoveInfo.TransitionState The admissible states the robot can be in currently for this move to execute.
exit_state MoveInfo.TransitionState The state of the robot after the move is complete.
controls_arm bool Indicators as to which parts of the robot that the move controls.
controls_legs bool
controls_body bool
controls_gripper bool
controls_lights bool
controls_annotations bool
is_looping bool
display ChoreographerDisplayInfo Information for the GUI tool to visualize the sequence move info.
animated_move_generated_id google.protobuf.StringValue 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.

MoveParams

Defines varying parameters for a particular instance of a move.

Field Type Description
type string Unique ID of the move type that these params are associated with.
start_slice int32 How many slices since the start of the song this move should be executed at.
requested_slices int32 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.
id int32 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.
jump_params JumpParams
rotate_body_params RotateBodyParams
step_params StepParams
butt_circle_params ButtCircleParams
turn_params TurnParams
pace_2step_params Pace2StepParams
twerk_params TwerkParams
chicken_head_params ChickenHeadParams
clap_params ClapParams
front_up_params FrontUpParams
sway_params SwayParams
body_hold_params BodyHoldParams
arm_move_params ArmMoveParams
kneel_leg_move_params KneelLegMoveParams
running_man_params RunningManParams
kneel_circle_params KneelCircleParams
gripper_params GripperParams
hop_params HopParams
random_rotate_params RandomRotateParams
crawl_params CrawlParams
side_params SideParams
bourree_params BourreeParams
workspace_arm_move_params WorkspaceArmMoveParams
figure8_params Figure8Params
kneel_leg_move2_params KneelLegMove2Params
fidget_stand_params FidgetStandParams
goto_params GotoParams
frame_snapshot_params FrameSnapshotParams
set_color_params SetColorParams
ripple_color_params RippleColorParams
fade_color_params FadeColorParams
independent_color_params IndependentColorParams
custom_gait_params CustomGaitParams
leg_joint_params LegJointParams
animate_params AnimateParams

SaveSequenceRequest

Write a choreography sequence as a file to robot memory so it will be retained through reboot

Field Type Description
header bosdyn.api.RequestHeader Common request header
sequence_name string Name of the sequence to be added to the selection of retained sequences
add_labels string List of labels to add to the sequence when it is being saved

SaveSequenceResponse

Field Type Description
header bosdyn.api.ResponseHeader Common response header.
status SaveSequenceResponse.Status

SequenceInfo

Field Type Description
name string
labels string
saved_state SequenceInfo.SavedState 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
exit_state MoveInfo.TransitionState The exit transition state of the sequence.

StartRecordingStateRequest

Field Type Description
header bosdyn.api.RequestHeader Common request header
continue_recording_duration google.protobuf.Duration 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.
recording_session_id uint64 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.

StartRecordingStateResponse

Field Type Description
header bosdyn.api.ResponseHeader Common response header
status StartRecordingStateResponse.Status
recording_session_id uint64 Unique identifier for the current recording session

StopRecordingStateRequest

Field Type Description
header bosdyn.api.RequestHeader Common request header

StopRecordingStateResponse

Field Type Description
header bosdyn.api.ResponseHeader Common response header

UploadAnimatedMoveRequest

Field Type Description
header bosdyn.api.RequestHeader Common request header
animated_move_generated_id google.protobuf.StringValue 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.
animated_move Animation AnimatedMove to upload to the robot and create a dance move from.

UploadAnimatedMoveResponse

Field Type Description
header bosdyn.api.ResponseHeader Common response header.
status UploadAnimatedMoveResponse.Status
warnings string 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.

UploadChoreographyRequest

Field Type Description
header bosdyn.api.RequestHeader Common request header.
choreography_sequence ChoreographySequence ChoreographySequence to upload and store in memory
non_strict_parsing bool 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.

UploadChoreographyResponse

Field Type Description
header bosdyn.api.ResponseHeader 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.
warnings string 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.

Animation.ArmPlayback

Mode for hand trajectory playback

Name Number Description
ARM_PLAYBACK_DEFAULT 0 Playback as specified. Arm animations specified with joint angles playback in jointspace and arm animations specified as hand poses playback in workspace.
ARM_PLAYBACK_JOINTSPACE 1 Playback in jointspace. Arm animation will be most consistent relative to the body
ARM_PLAYBACK_WORKSPACE 2 Playback in workspace. Hand pose animation will be most consistent relative to the current footprint. Reference frame is animation frame.
ARM_PLAYBACK_WORKSPACE_DANCE_FRAME 3 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.

ChoreographerDisplayInfo.Category

Move Category affects the grouping in the choreographer list view, as well as the color it’s displayed with.

Name Number Description
CATEGORY_UNKNOWN 0
CATEGORY_BODY 1
CATEGORY_STEP 2
CATEGORY_DYNAMIC 3
CATEGORY_TRANSITION 4
CATEGORY_KNEEL 5
CATEGORY_ARM 6
CATEGORY_ANIMATION 7
CATEGORY_MPC 8
CATEGORY_LIGHTS 9
CATEGORY_ANNOTATIONS 10

ChoreographyCommandResponse.Status

Name Number Description
STATUS_UNKNOWN 0
STATUS_OK 1
STATUS_ACCEPTED_WITH_MODIFICATION 2
STATUS_LEASE_ERROR 3
STATUS_NO_MATCHING_MOVE 4
STATUS_INVALID_COMMAND 5
STATUS_ALREADY_EXPIRED 6

ChoreographyStatusResponse.Status

Name Number Description
STATUS_UNKNOWN 0
STATUS_DANCING 1
STATUS_COMPLETED_SEQUENCE 2
STATUS_PREPPING 3
STATUS_WAITING_FOR_START_TIME 4
STATUS_VALIDATING 5
STATUS_INTERRUPTED 6
STATUS_FALLEN 7
STATUS_POWERED_OFF 8
STATUS_OTHER 9

ClearAllSequenceFilesResponse.Status

Name Number Description
STATUS_UNKNOWN 0 Do not use.
STATUS_OK 1 All retained sequences were successfully removed from robot memory
STATUS_FAILED_TO_DELETE 2 Deletion of all retained files failed

DeleteSequenceResponse.Status

Name Number Description
STATUS_UNKNOWN 0 Do not use.
STATUS_OK 1 The sequence was successfully deleted
STATUS_UNKNOWN_SEQUENCE 2 The sequence does not exist
STATUS_ALREADY_TEMPORARY 3 The sequence is already temporary and will be removed at the next reboot.
STATUS_PERMANENT_SEQUENCE 4 Permanent sequences cannot be deleted

DownloadRobotStateLogRequest.LogType

Name Number Description
LOG_TYPE_UNKNOWN 0 Unknown. Do not use.
LOG_TYPE_MANUAL 1 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}.
LOG_TYPE_LAST_CHOREOGRAPHY 2 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.

DownloadRobotStateLogResponse.Status

Name Number Description
STATUS_UNKNOWN 0 Status unknown. Do not use.
STATUS_OK 1 The log data downloaded successfully and is complete.
STATUS_NO_RECORDED_INFORMATION 2 Error where there is no robot state information logged in the choreography service.
STATUS_INCOMPLETE_DATA 3 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.

ExecuteChoreographyResponse.Status

Name Number Description
STATUS_UNKNOWN 0
STATUS_OK 1
STATUS_INVALID_UPLOADED_CHOREOGRAPHY 2
STATUS_ROBOT_COMMAND_ISSUES 3
STATUS_LEASE_ERROR 4

ModifyChoreographyInfoResponse.Status

Name Number Description
STATUS_UNKNOWN 0 Do not use.
STATUS_OK 1 The sequence was successfully modified
STATUS_UNKNOWN_SEQUENCE 2 The sequence does not exist
STATUS_PERMANENT_SEQUENCE 3 Permanent sequences cannot be modified
STATUS_FAILED_TO_UPDATE 4 The changes were made, but the retained sequence file was not updated and changes were reverted

MoveInfo.TransitionState

The state that the robot is in at the start or end of a move.

Name Number Description
TRANSITION_STATE_UNKNOWN 0 Unknown or unset state.
TRANSITION_STATE_STAND 1 The robot is in a normal (standing) state.
TRANSITION_STATE_KNEEL 2 The robot is kneeling down.
TRANSITION_STATE_SIT 3 The robot is sitting.
TRANSITION_STATE_SPRAWL 4 The robot requires a self-right.

SaveSequenceResponse.Status

Name Number Description
STATUS_UNKNOWN 0 Do not use.
STATUS_OK 1 The sequence was successfully saved
STATUS_UNKNOWN_SEQUENCE 2 The requested sequence was not found
STATUS_PERMANENT_SEQUENCE 3 This sequence is already saved in the release
STATUS_FAILED_TO_SAVE 4 We failed to save a file with the sequence information to robot

SequenceInfo.SavedState

Name Number Description
SAVED_STATE_UNKNOWN 0 Status unknown; do not use
SAVED_STATE_TEMPORARY 1 Sequence will be forgotten on reboot
SAVED_STATE_RETAINED 2 A file for this sequence is stored on the robot; the sequence will be loaded to memory each time the robot boots
SAVED_STATE_PERMANENT 3 Sequence was built into the release and can't be deleted

StartRecordingStateResponse.Status

The status for the start recording request.

Name Number Description
STATUS_UNKNOWN 0 Status unknown; do not use.
STATUS_OK 1 The request succeeded and choreography has either started, or continued with an extended duration based on if a session_id was provided.
STATUS_UNKNOWN_RECORDING_SESSION_ID 2 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.
STATUS_RECORDING_BUFFER_FULL 3 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

UploadAnimatedMoveResponse.Status

Name Number Description
STATUS_UNKNOWN 0 Do not use.
STATUS_OK 1 Uploading + parsing the animated move succeeded.
STATUS_ANIMATION_VALIDATION_FAILED 2 The animated move is considered invalid, see the warnings.
STATUS_PING_RESPONSE 3 Treated this message as a ping. Responding to demonstrate connectivity.

spot/choreography_service.proto

ChoreographyService

Method Name Request Type Response Type Description
ListAllMoves ListAllMovesRequest ListAllMovesResponse List the available dance moves and their parameter information.
ListAllSequences ListAllSequencesRequest ListAllSequencesResponse List the available choreography sequences currently on the robot.
DeleteSequence DeleteSequenceRequest DeleteSequenceResponse Delete a retained choreography sequence from the collection of user uploaded choreography sequences.
SaveSequence SaveSequenceRequest SaveSequenceResponse Save a user uploaded choreography sequence to the robots collection of retained choreography sequences.
ModifyChoreographyInfo ModifyChoreographyInfoRequest ModifyChoreographyInfoResponse Modify the metadata of a choreography sequence.
ClearAllSequenceFiles ClearAllSequenceFilesRequest ClearAllSequenceFilesResponse Clear all retained choreography sequence files from robot memory.
UploadChoreography UploadChoreographyRequest UploadChoreographyResponse Upload a dance to the robot.
UploadAnimatedMove UploadAnimatedMoveRequest UploadAnimatedMoveResponse Upload an animation to the robot.
ExecuteChoreography ExecuteChoreographyRequest ExecuteChoreographyResponse Execute the uploaded dance.
StartRecordingState StartRecordingStateRequest StartRecordingStateResponse Manually start (or continue) recording the robot state.
StopRecordingState StopRecordingStateRequest StopRecordingStateResponse Manually stop recording the robot state.
DownloadRobotStateLog DownloadRobotStateLogRequest DownloadRobotStateLogResponse stream Download log of the latest recorded robot state information.
ChoreographyStatus ChoreographyStatusRequest ChoreographyStatusResponse Report the status of a dancing robot.
ChoreographyCommand ChoreographyCommandRequest ChoreographyCommandResponse Commands intended for individual dance moves that are currently executing.

Standard Types

.proto Type Notes C++ Java Python Go C# PHP Ruby
double double double float float64 double float Float
float float float float float32 float float Float
int32 Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead. int32 int int int32 int integer Bignum or Fixnum (as required)
int64 Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead. int64 long int/long int64 long integer/string Bignum
uint32 Uses variable-length encoding. uint32 int int/long uint32 uint integer Bignum or Fixnum (as required)
uint64 Uses variable-length encoding. uint64 long int/long uint64 ulong integer/string Bignum or Fixnum (as required)
sint32 Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s. int32 int int int32 int integer Bignum or Fixnum (as required)
sint64 Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s. int64 long int/long int64 long integer/string Bignum
fixed32 Always four bytes. More efficient than uint32 if values are often greater than 2^28. uint32 int int uint32 uint integer Bignum or Fixnum (as required)
fixed64 Always eight bytes. More efficient than uint64 if values are often greater than 2^56. uint64 long int/long uint64 ulong integer/string Bignum
sfixed32 Always four bytes. int32 int int int32 int integer Bignum or Fixnum (as required)
sfixed64 Always eight bytes. int64 long int/long int64 long integer/string Bignum
bool bool boolean boolean bool bool boolean TrueClass/FalseClass
string A string must always contain UTF-8 encoded or 7-bit ASCII text. string String str/unicode string string string String (UTF-8)
bytes May contain any arbitrary sequence of bytes. string ByteString str []byte ByteString string String (ASCII-8BIT)