Skip to content

Latest commit

 

History

History
683 lines (459 loc) · 48 KB

move_reference.md

File metadata and controls

683 lines (459 loc) · 48 KB

Choreography moves reference

This section describes each Choreographer move at a high level, including:

  • Parameters used by the move
  • Animated GIFs demonstrating the move with default parameters (for most moves)

More information about choreography moves can be found by looking at the choreography protos in the Spot proto reference.

Body moves

rotate_body

Rotates the body to a desired orientation. Nominally takes one beat (4 slices) but can be extended to go slower.

Parameter Effect
rotation The desired body orientation.
return_to_start_pose If true, returns to the previous body pose by the end of this move. If false, remains in the specified position.

rotate_body_sharp

Identical to the rotate_body move, but moves to the desired position quickly and returns (unless configured not to return) more slowly.

No Parameters

body_hold

Moves the body to a specified position/orientation and holds it steady for the specified duration then optionally returns to a neutral pose.

Parameter Effect
rotation/translation The desired pose.
entry_slices How long to spend transitioning to the desired pose.
exit_slices How quickly to transition back to the original pose. If set to 0, remains at the specified pose.

body_const

Holds the body at the pose from the immediately preceding body-track move. Applies to both orientation and translation. Can be extended to any desired duration.

No Parameters

sway

Sway back and forth to the beat. A full back/forth cycle takes 2 beats.

Parameter Effect
vertical/horizontal/roll How much motion in the respective directions.
pivot Which portion of the body remains stationary.
style Modifies the velocity profile of the motion.
pronounced How exaggerated the style is. Smaller values will be closer to the SWAY_STYLE_STANDARD.
hold_zero_axes If set to true, maintains the previous pose in whichever axes 0 motion is specified. If false, those axes return to nominal.

random_rotate

Rotate the body in a random, chaotic manner. Rotation in each axis is generated independently. Can be extended to any desired duration.

Parameter Effect
amplitude How far from the nominal pose to rotate in each axis.
speed How quickly to rotate in each axis.
speed_variation How much to vary the speed. Controls the ratio between the slowest and fastest moves. When 0, no variation (all moves are the same speed).
num_speed_tiers Can create multiple tiers of speed.
tier_variation Difference between the speed of the slowest tier compared to the fastest_tier.

twerk

Lowers the robutt down and back up once. Lasts for one beat (4 slices).

Parameter Effect
height How much to lower the robutt.

butt_circle

Move the robutt, head, or both head and robutt in a circle. Extendable to the desired duration. Rotates about the previous pose.

Parameter Effect
radius Size of the rotation circle.
beats_per_circle The duration of a circle in beats (4 slices each). Mutually exclusive with number_of_circles. Will be ignored unless number_of_circles = 0.
number_of_circles The number of circles to perform. Mutually exclusive with beats_per_circle. If number_of_circles = 0, beats_per_circle will be used instead.
pivot What part of the robot to pivot around. Pivoting around the front means the robutt moves in circles.
clockwise Which direction to rotate.
starting_angle Where in the circle to start rotation. Since it spirals outwards, it may not be obvious exactly where it starts.

fidget_stand

A procedurally-generated idle animation. It looks around, breathes, shifts its weight, and stamps. Can use one of the preset configurations or customize the parameters.

Parameter Effect
preset Pre-designed parameter combinations that attempt to convey a specific emotion. NOTE: All other sliders are only active if this is set to "Custom".
min_gaze_pitch How far down the robot looks. (Radians)
max_gaze_pitch How far up the robot looks. (Radians)
gaze_mean_period How frequently the robot looks somewhere else. (Seconds)
gaze_center_cfp Where the gaze array originates in the center-of-footprint frame. (Meters)
shift_mean_period How frequently the robot shifts its weight. (Seconds)
shift_max_transition_time Maximum amount of time the robot spends shifting its weight. (Seconds)
breath_min_z Minimum amplitude of the "breathing" (meters)
breath_max_z Maximum amplitude of the "breathing" (meters)
leg_gesture_mean_period How frequently the robot does a leg gesture. (Seconds)
gaze_slew_rate How quickly the robot shifts its gaze. (Meters/Second)
gaze_position_generation_gain How much Brownian motion is applied to the gaze point.
gaze_roll_generation_gain How much Brownian motion is applied to the gaze roll.

Step moves

step

Take a single step with one or two feet. Nominally requires one beat (4 slices) but can be extended to step slower. If stepping with two feet, especially both front or both hind feet, longer steps will be unreliable. Lifts off one slice after the move begins and touches down one slice before it ends.

Parameter Effect
foot/second_foot Which feet to step with. If only a single foot is desired, second_foot should be set to LEG_NO_LEG.
offset Where to step relative to a nominal stance for the first foot.
touch If true, taps the foot near the ground midway through swing.
touch_offset If touch is true, where the touch should occur relative to the nominal stance location.
mirror_x, mirror_y Determines whether the second_foot (if there is one) has the same offset and touch_offset as the first foot (false) or the opposite offset (true). Specified independently for the x and y axis.
swing_waypoint Defines a waypoint that the swing leg must go through between liftoff and touchdown. If left at {0,0,0}, no waypoint will be added and the system will take a normal swing.
waypoint_dwell What fraction of the swing should be spent near the waypoint.
swing_height How high to lift the foot/feet. Does nothing if a swing_waypoint is specified.
liftoff_velocity How quickly to raise the foot/feet. Does nothing if a swing_waypoint is specified.
touchdown_velocity How quickly to lower the foot/feet. Does nothing if a swing_waypoint is specified.

goto

Trot to a specified position in the dance frame. Unless explicitly set, the dance frame is defined by where the dance begins. Takes 1 step per beat. Extend the duration to successfully move farther.

Parameter Effect
relative Relative to starting pose if true. Target specified in dance frame if false.
absolute_position Position the robot moves to in the dance frame. Ignored if absolute = false.
absolute_yaw Yaw orientation the robot moves to in the dance frame. Ignored if absolute = false.
relative_position Position the robot moves to relative to where it started this move. Ignored if absolute = true.
relative_yaw Yaw orientation the robot moves to relative to where it started this move. Ignored if absolute = true.
step_position_stiffness How precisely the robot steps in the nominal locations.
duty_cycle What fraction of the time a foot is on the ground. 0.5 is a standard trot.
link_to_next Should the robot smoothly transition from this move to a subsequent goto move.

trot

Runs the trot gait. Can be extended to run for an arbitrary duration.

Parameter Effect
velocity/yaw_rate The steering command.
stand_time Duration before the end of the nominal move to start going to a stand. If set too short, the robot may not finish transitioning and could fall.

pace

Runs the pace gait. Can be extended to run for any desired duration.

Parameter Effect
velocity/yaw_rate The steering command.
stand_time Duration before the end of the nominal move to start going to a stand. If set too short, it may not finish transitioning and could fall.

turn_2step

Take two steps to turn in place. Requires 2 beats (8 slices).

Parameter Effect
motion_is_absolute Is motion in the dance frame (true) or relative to the current position (false).
motion How far to move. (Meters)
absolute_motion Where to move to in the dance frame. (Meters)
yaw_is_absolute Is yaw in the dance frame (true) or relative to the current position (false).
yaw How far to rotate. (Radians)
absolute_yaw Where to rotate to in the dance frame. (Radians)
swing_height How to pick up the feet. Zero indicates to use a default swing.
swing_velocity How quickly to lift off and touch down the feet. Zero indicates to use a default swing.

pace_2step

Take two steps to translate using a pace gait (legs on the same side of the robot move together). Requires 2 beats (8 slices). Caution: Large lateral steps require a high-traction floor.

Parameter Effect
motion_is_absolute Is motion in the dance frame (true) or relative to the current position (false).
motion How far to move. (Meters)
absolute_motion Where to move to in the dance frame. (Meters)
yaw_is_absolute Is yaw in the dance frame (true) or relative to the current position (false).
yaw How far to rotate. (Radians)
absolute_yaw Where to rotate to in the dance frame. (Radians)
swing_height How to pick up the feet. Zero indicates to use a default swing.
swing_velocity How quickly to lift off and touch down the feet. Zero indicates to use a default swing.

crawl

Locomotes, taking one step every beat. Can be extended to run for any desired duration.

Parameter Effect
velocity Desired velocity of the robot.
swing_slices Duration of a swing in slices. An entire gait cycle takes 4 beats (16 slices). At the maximum value of 8 slices two of the robot's feet will always be on the ground, as in the Amble gait. With a value of 4, the robot will always have one foot on the ground, as in the Crawl gait.
stance_width, stance_length The dimensions and shape of the rectangle the stance feet make.

custom_gait

See CustomGait

Dynamic moves

running_man

Spot’s version of the “running man” dance move. Can be extended to run for any desired duration.

Parameter Effect
velocity By default, the robot dances in place but can move around in the world.
pre_move_cycles How many slices to dance in place before moving at the specified velocity.
swing_height How high to pick up the feet.
spread How far to slide the feet backward from where they’re initially placed.
reverse If true, will step backwards and slide forward: The reverse of the normal motion.
speed_multiplier Run the move at something other than the song's overall beats-per-minute.
duty_cycle What fraction of the time legs are in stance.
com_height Desired height of the center-of-mass.

bourree

Cross-legged tippy-taps, like the ballet move.

Parameter Effect
velocity, yaw_rate Steering command.
stance_length Distance between front and hind legs.

hop

Runs the hop gait. Can be extended to run for any desired duration.

Parameter Effect
velocity/yaw_rate The steering command.
stand_time The duration before the end of the nominal move to start going to a stand. If set too short, the robot may not finish transitioning and could fall.

jog

Runs the jog gait. Can be extended to run for any desired duration.

Parameter Effect
velocity/yaw_rate The steering command.
stand_time The duration before the end of the nominal move to start going to a stand. If set too short, the robot may not finish transitioning and could fall.

skip

Runs the skip gait. Is extendable to run for an arbitrary duration.

Parameter Effect
velocity/yaw_rate The steering command.
stand_time The duration before the end of the nominal move to start going to a stand. If set too short, the robot may not finish transitioning and could fall.

front_up

Lifts the front feet then returns to a stand. Can be extended to adjust the duration of the hind-feet-only stance. Longer durations are unreliable. Lifts off 2 slices from the start of the move and touches down one slice from the end of the move.

Parameter Effect
mirror If true, raises the hind legs instead of the front legs.

jump

Jumps in place. Nominally lasts one beat but may take more slices at faster tempos.

Parameter Effect
translation_is_absolute Is motion in the dance frame (true) or relative to the current position (false).
translation How far to move. (Meters)
absolute_translation Where to move to in the dance frame. (Meters)
yaw_is_absolute Is yaw in the dance frame (true) or relative to the current position (false).
yaw How far to rotate. (Radians)
absolute_yaw Where to rotate to in the dance frame. (Radians)
flight_slices How long the jump should last with all feet off the ground measured in slices. Depending on tempo, higher values will be unreliable.
stance_width/stance_length The footprint the robot should land its jump in.
swing_height How how to pick up the feet.
split_fraction Splits the liftoff and touchdown into two pairs of two legs. In fraction of of swing with two legs in flight, so 0 means all legs fully synchronized.
lead_leg_pair If split_fraction is not 0, indicates which legs lift off first. Default AUTO mode will select a pair based on the translation vector.

Transition moves

sit

Sit the robot down or remain seated. Requires at least 3 seconds.

No Parameters

stand_up

Stand the robot up from a seated position. Requires at least 2 seconds.

No Parameters

sit_to_sprawl

Starting from a seated position, rolls the robot onto its side/back. Intended to prep the robot for a more dramatic self-right.

Parameter Effect
side Which side to roll to.

random_stretch

Extends any extendable moves immediately prior to it by a random number of slices between 0 and the duration of the stretch move. The robot then immediately jumps to the end of this move. Note: This changes the duration of a choreography sequence.

No Parameters

stand_to_kneel

Transitions from standing to kneeling on the hind legs. Requires 2 seconds.

No Parameters

kneel_to_stand

Transitions from kneeling on the hind legs to a stand. Requires 2.4 seconds.

No Parameters

kneel_to_stand_fast

Transitions from kneeling on the hind legs to a stand. Faster and smoother than kneel_To_stand, but might be less reliable in some combinations.

No Parameters

self_right

Activate the self-right behavior. Primarily useful as the first move in a dance if you wish to start from a non-standard posture. Nominally requires 5 seconds, but can be extended to ensure that it completes.

No Parameters

leg_pose

Directly pose Spot's legs by specifying joint angles. Spot will make no attempt to balance.

Parameter Effect
angles The specified joint angles.

Kneel moves

kneel_leg_move

While kneeling, move the front legs to a specified joint configuration. Nominally takes one beat (4 slices) but can be extended to go slower.

Parameter Effect
hip_x, hip_y, knee Joint angles for the front-left leg.
mirror If true, move the legs in a mirrored manner. If false, front-right leg moves to the same joint configuration as the front-left. If true, the front-right hip_x angle has the opposite sign: The front-left leg and the other joint angles will be the same.
easing Controls the velocity profile of the motion.

kneel_leg_move2

Similar to kneel_leg_move, but allows you to independently set the front-left and front-right leg joint angles. Additionally allows linking for smoother transitions between multiple consecutive moves.

Parameter Effect
left_hip_x, left_hip_y, left_knee Joint angles for the front-left leg.
right_hip_x, right_hip_y, right_knee Joint angles for the front-left leg.
easing Controls the velocity profile of the motion. Does nothing for linked moves.
link_to_next Links this move to a second kneel_leg_move2 that immediately follows it if there is one. Multiple moves can be linked in this way. Linked moves form a combined trajectory where the joints travel through each waypoint but not necessarily come to a zero-velocity stop at the end of each move.

kneel_clap

While kneeling, clap the front feet together. Takes one beat (4 slices).

Parameter Effect
direction The movement direction of the clap in the flat_body frame (z is up, x is direction the robot faces).
location The location of the clap in body frame.
speed The speed of the clap.
clap_distance How far apart the feet will be prior to clapping.

kneel_circles

While kneeling, move the front feet in circles in the body-XZ (sagittal) plane. The two feet will be 180 degrees out of phase. Can be extended to run for any duration.

Parameter Effect
location The location of the center of the circles in body frame.
beats_per_circle The duration of a full circle in beats. Ignored unless number_of_circles = 0.
number_of_circles Number of circles to perform. If 0, then use beats_per_circle.
offset Distance between the circle plane and the body centerline.
radius Size of the circles that the feet move in.
reverse Reverses the circle direction. Nominal direction is away from the body on top.

Arm moves

nod

Moves the WR0 joint up and back down for one beat (4 slices). If done from a stow pose, will raise the hand.

No Parameters

stow

Returns the arm to a stowed configuration. Nominally takes one beat (4 slices) but can be extended to go slower.

No Parameters

unstow

Moves the arm to a deployed configuration. Nominally takes one beat (4 slices) but can be extended to go slower.

No Parameters

shoulder_left

Rotate the SH0 joint to move the gripper to the left. Nominally takes one beat (4 slices) but can be extended to go slower.

No Parameters

shoulder_right

Rotate the SH0 joint to move the gripper to the right. Nominally takes one beat (4 slices) but can be extended to go slower.

No Parameters

arm_move

Moves the arm to the specified joint angles. Nominally takes one beat (4 slices) but can be adjusted to go faster or slower.

Parameter Effect
angles The specified joint angles, including the gripper angle.
easing Controls the velocity profile of the motion.

arm_move_no_gripper

Identical to arm_move, but excluding the gripper track.

arm_move_relative

Moves the arm incrementally, relative to the previous pose. Nominally takes one beat (4 slices) but can be adjusted to go faster or slower.

Parameter Effect
angles The specified joint angles, including the gripper angle.
easing Controls the velocity profile of the motion.

workspace_arm_move

Moves the gripper to a location specified in the world (not joint angles).

Parameter Effect
frame Frame in which the motion is specified.
absolute If true goes to a position/orientation relative to the origin of the given frame. If false, direction is defined by the specified frame, but motion is relative to previous pose.
rotation, translation The pose to move to.
easing Controls the velocity profile of the motion.

figure8_move

Moves the gripper in a figure-8 pattern centered on the previous pose. Repeats for the specified duration.

Parameter Effect
height, width The size and shape of the figure-8 pattern.
beats_per_cycle How long to complete one cycle of the figure-8 pattern.

gripper

Moves the gripper to the specified angle. Duration can be set to any number of slices but speed will be determined by parameter. Once the gripper reaches the specified angle it will stop. If the selected duration is too short to complete the move given the configured speed, the robot remains at whatever angle it reaches when move ends.

Parameter Effect
angle The desired gripper angle.
speed The desired velocity of the gripper in rad/s.

frame_snapshot

This move sets the frame to be used by future moves that are in an absolute frame. Some moves will always be in the dance frame (frame_id = 0) and some allow you to explicitly select a frame_id. This move can set frames relative to either a fiducial or to Spot's footprint.

Parameter Effect
frame_id Which frame to set. The dance frame 0 is used by moves that do absolute motion but don't explicitly select a frame.
fiducial_number Which fiducial to set the frame relative to. If set to -1 or if the fiducial has not been seen recently, the fiducial number is set according Spot's footprint.
include_each_leg Should each leg be included when determining the footprint.
compensated If a foot is not included, should we offset the footprint as if that foot were in a nominal stance? Otherwise, we'll take the center of the included feet.

chicken_head

Holds the arm stationary in the world while the body is moving. Can also be configured to move in a fixed oscillation in the world.

Parameter Effect
bob_magnitude A vector describing the amplitude and direction of a periodic motion of the gripper in the world.
beats_per_cycle How long it takes to complete 1 cycle of the motion described by bob_magnitude
follow If set to true, the gripper position will adjust if the robot steps to a new location.

Face Lights moves

All colors are specified as RGB on a 0-255 scale.

set_color

Sets the color of Spot's face (status) lights. Left and right lights can be independently set. Lights can be set to fade in and out.

Parameter Effect
left_color Color of the left face lights. Color of all face lights if right_same_as_left specified.
right_same_as_left If true, all face lights are left_color. If false, left and right are independently specified.
right_color Color of the right face lights. Does nothing if right_same_as_left specified.
fade_in_slices How long to spend brightening at the beginning, measured in slices (1/4 beats).
fade_out_slices How long to spend darkening at the end, measured in slices (1/4 beats).

fade_color

Sets the face (status) lights to show one color at the top fading towards another color at the bottom.

Parameter Effect
top_color The color of the topmost lights.
bottom_color The color of the bottommost lights.
fade_in_slices How long to brighten, measured in slices (1/4 beats).
fade_out_slices How long to dim at the end, measured in slices (1/4 beats).

independent_color

Independently specifies the color of all 8 face (status) lights.

Parameter Effect
top_left Color of the top left light.
upper_mid_left Color of the second from top left light.
lower_mid_left Color of the second from bottom left light.
bottom_left Color of the bottom left light.
top_right Color of the top right light.
upper_mid_right Color of the second from top right light.
lower_mid_right CColor of the second from bottom right light.
bottom_right Color of the bottom right light.
fade_in_slices How long to brighten, measured in slices (1/4 beats).
fade_out_slices How long to dim at the end, measured in slices (1/4 beats).

ripple_color

Sets the face (status) lights in a variety of moving patterns.

Parameter Effect
main Color to make the face lights.
secondary Second color to make the face lights, used only by some patterns.
pattern Select from a variety of light motion patterns.
light_side Which side lights to use for the pattern.
increment_slices How quickly to move the pattern in slices (1/4 beats) between updates to the pattern.

Audio Visual Lights moves

All colors are specified as RGB on a 0-255 scale.

set_audio_visual_color

Sets the color of the audio visual system's lights. Lights can be independently set. Lights can be set to fade in and out.

Parameter Effect
front_center_color Color of the front center audio visual light. Color of all audio visual lights if all_same_as_center specified.
all_same_as_center If true, all lights are front_center_color. If false, lights are independently specified.
front_left_color Color of the front left audio visual light. Does nothing if all_same_as_center specified.
front_right_color Color of the front right audio visual light. Does nothing if all_same_as_center specified.
back_left_color Color of the back left audio visual light. Does nothing if all_same_as_center specified.
back_right_color Color of the back right audio visual light. Does nothing if all_same_as_center specified.
fade_in_slices How long to brighten, measured in slices (1/4 beats).
fade_out_slices How long to dim at the end, measured in slices (1/4 beats).

set_all_color

Sets the color of the audio visual system's lights and the face (status) lights. Lights can be independently set. Lights can be set to fade in and out.

Parameter Effect
front_center_color Color of the front center audio visual light. Color of all audio visual lights if all_same_as_center specified.
all_same_as_center If true, all lights are front_center_color. If false, lights are independently specified.
status_left_color Color of the left face lights. Does nothing if all_same_as_center specified.
status_right_color Color of the right face lights. Does nothing if all_same_as_center specified.
front_left_color Color of the front left audio visual light. Does nothing if all_same_as_center specified.
front_right_color Color of the front right audio visual light. Does nothing if all_same_as_center specified.
back_left_color Color of the back left audio visual light. Does nothing if all_same_as_center specified.
back_right_color Color of the back right audio visual light. Does nothing if all_same_as_center specified.
fade_in_slices How long to brighten, measured in slices (1/4 beats).
fade_out_slices How long to dim at the end, measured in slices (1/4 beats).

Audio Visual Buzzer moves

buzzer_note

Play a note from the Audio Visual System Buzzer for the duration of the move.

Parameter Effect
note The musical note that will be played.
sharp If true, raises the note by a half step, or semitone. If both sharp and flat are true, there is no effect.
flat If true, lowers the note by a half step, or semitone. If both sharp and flat are true, there is no effect.
octave The octave of the note.