This repository contains the spot_manipulation_driver package required to operate the Spot Arm through ROS with the notable features listed below. Additionally, the spot_moveit_config package provides the configuration settings for using the Spot Arm with MoveIt. This requires that the manipulation driver also be running.
-
ROS Services:
- Take arm to predefined named poses
- Open and close gripper
-
ROS Action Servers:
- Execute arm joint trajectories
- Execute gripper trajectories
- Execute arm and gripper trajectories as a single synced trajectory
- Execute cartesian position/force trajectory for the EE
- Given pixel coordinates, camera info, and a transform snapshot have the robot go and grasp the pixel-specified object in an image.
-
ROS Subscriptions:
- Jog arm with twist messages
The recommended way to run this driver is to run it combined with the body driver. For that, detailed information is available here
If there is a need to run just the manipulation driver, execute the following command from the command line:
ros2 run spot_manipulation_driver manipulation_driver_node --ros-args -p hostname:=192.168.50.3 -p publish_joint_states:=TrueThe spot_moveit_config package can be used to bring up MoveIt servers with the correct settings to operate with the Spot Robot. The main launch files of interest are:
ros2 launch spot_moveit_config move_group.launch.py # bring up move group server
ros2 launch spot_moveit_config spot_execution.launch.py # same as above, but launches RViz as wellThis package is configured to consider environmental obstacles localized to the map frame, so the spot_navigation localization capabilities need to be running for this to work. If you wish to operate without obstacle avoidance (which you shouldn't), you can comment out the spot_mobility_joint entry in the robot SRDF and comment out all of the 3D sensors in the sensors_3d.yaml file.
Janak Panthi (aka Crasun Jans) and Alex Navarro