-
Notifications
You must be signed in to change notification settings - Fork 110
Spot Driver Available Interfaces
This action is a thin layer on top of Boston Dynamics' RobotCommand. This action is a "sledgehammer", almost anything you want to do with the robot can be achieved via the robot command action -- walking, posing the body, manipulation, gripping, etc. The caveat is the request has a lot of fields and can be difficult to fill out manually. The request field is generated from the protobuf via the bosdyn_msgs package (run ros2 interface show spot_msgs/action/RobotCommand to see just how complex it is!).
The easiest way to fill out this request properly is to first generate the protobuf using BD's robot command builder tool, then convert it to the desired ROS message using a conversion function from the bosdyn_msgs package.
from bosdyn_msgs.conversions import convert
from bosdyn_msgs.msg import RobotCommand
...
proto_robot_command = ... # generate this using BD's protos
ros_robot_command = RobotCommand()
convert(proto_robot_command, ros_robot_command)
# then you can use this to fill out the action request
This action is a thin wrapper on BD's ManipulationApiRequest. Similarly to the robot command action, this action's request is autogenerated from BD protobufs, and it is easiest to fill it in using the conversion functions.
This is a graph nav action to command the robot to navigate to a specific waypoint ID.
This requests the robot to move to a desired target pose. As implemented, the target pose specified must be in the "body" frame. Run ros2 interface show spot_msgs/action/Trajectory for more information on how to fill out this request.
Trigger service to move the arm to the "carry" position
Trigger service to stow the arm
Trigger service to unstow the arm to the "ready" position
Trigger service to claim the robot to claim the robot (for example, will take control from the tablet)
Clear a behavior fault on the robot. The request requires the ID of the behavior fault which can be determined via the /status/behavior_faults topic.
Trigger service to close the claw gripper
Dock the robot. The service requires the dock_id which is a number printed on the fiducial at the dock.
E-stop the robot gently -- attempting to sit down first before powering the motors off
E-stop the robot by immediately cutting all power
Release the E-stop so that the robot can be operated again
Get various parameters of the camera in the gripper (resolution, image size, brightness, etc).
Query the robot for inverse kinematics solutions. Example on how this service works here with documentation here.
Clear graph nav graph
Get the pose according to graph nav localization
Set the graph nav localization method (fiducial or waypoint)
Upload a graph nav graph
List graph nav waypoint IDs
Lists the current world objects that Spot is keeping track of
Set the gait of the robot to one of the following Locomotion Modes
Modifies the mobility parameters to limit the maximum velocity that the robot can move during motion commands (this affects trajectory commands)
Trigger to open the gripper
Service to force Spot to override the grasp or carry state of the gripper/arm
Trigger service to power the motors off
Trigger service to power the motors on
Trigger to return the lease on the body
Trigger service to roll the robot over so that the battery can be removed from underneath it
Trigger service to self right the robot
Set various parameters of the camera in the gripper (resolution, image size, brightness, etc).
Trigger service to make the robot sit down
Trigger to run the spot check service
Set a boolean to indicate if the robot should be in stair mode
Trigger service to make the robot stand up
Trigger service to make the robot stop executing a command
Trigger service to take the lease of the robot
Trigger service to undock the robot
Publish to this topic to command the joint angles of the arm. The type of the message is sensor_msgs/msg/JointState. It should contain the names [arm_sh0, arm_sh1, arm_el0, arm_el1, arm_wr0, arm_wr1, arm_f1x] and desired positions for each element. (Velocity and effort components of the joint state message are not used!)
Publish to this topic to command the robot's body to move to a desired pose relative to the nominal standing pose without moving its feet. Only the z component of the position component is used. The orientation component will attempt to twist the body.
Publish to this topic to command the robot to walk at a given velocity. Only the x and y components of the linear twist are used, and only the z component of the angular twist is used.
Reports on if the gripper is open/closed, if the arm is stowed/unstowed, if the arm is carrying anything, and the velocity of the end effector in different frames.
Gives the position and velocity of the robot in either the odom or vision frame
Gives the velocity of the robot in either the odom or vision frame
Reports the status of the battery, including current charge.
Reports on a list of faults that the robot is currently experiencing. (Ideally this list is empty).
Reports on the estimated force at the end effector
Reports on the estops that are currently active on the robot.
Reports on whether the robot is sitting, standing, or moving.
Reports on the location of each foot with respect to the body frame, as well as if each foot is in contact with the floor.
Reports on the status of each lease on the robot, including who owns them.
Reports on how long the robot has been on and how far it has traveled since then.
Reports on current mobility parameters for the robot -- including if it is in stair mode, and what kind of gait is set.
Indicates what kind of power state the motors are in (powered, powering on/off, etc)
Reports on if there are any active system faults on the robot
Reports on the wifi connection of the robot
## Actions ### /execute_dance --- ## Services ### /get_choreography_status determine if your robot is licensed for choreography ### /list_all_dances List dances that can be performed ### /list_all_moves List moves that can be performed ### /recorded_state_to_animation ### /start_recording_state Start recording the state of the robot to later play back as choreography ### /stop_dance Trigger service to stop execution of a dance ### /stop_recording_state Stop recording the state of the robot to later play back as choreography ### /upload_animation ### /upload_sequence
delete a logpoint
delete a sound
get the current brightness of the LED
get the status of a logpoint
get the current position of the PTZ camera
get the current volume used for playing sounds
list current logpoints
list the available sounds
Load a sound that can later be played
Play a sound
set brightness of Spot Cam's LEDs
set Spot Cam to point at a certain pan-tilt-zoom
set the volume of Spot Cam