Enable programmatic control of the Boston Dynamic Spot robot through the Robot Operating System (ROS) interface.
The spot_ros_interface ROS package provides a ROS interface to the Spot API converting ROS messages to API/gRPC calls to the Spot robot.
https://docs.microsoft.com/en-us/windows/wsl/install-win10
https://github.com/boston-dynamics/spot-sdk/blob/master/docs/python/quickstart.md#getting-the-code
Follow Boston Dynamics' instructions for upgrading
Configure your Ubuntu repositories to allow "restricted," "universe," and "multiverse". Follow instructions here.
Remember to sudo apt-get update
after this.
Set up sources.list
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
Set up keys
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
If you experience issues connecting to the keyserver, you can try substituting hkp://pgp.mit.edu:80
Alternatively, you can use curl instead of the apt-key command, which can be helpful if you are behind a proxy server:
curl -sSL 'http://keyserver.ubuntu.com/pks/lookup?op=get&search=0xC1CF6E31E6BADE8868B172B4F42ED6FBAB17C654' | sudo apt-key add -
If you still experience issues like:
gpg: keyserver receive failed: No dirmngr
or
gpg: can't connect to the agent: IPC connect call failed
(see here and here), ensure dirmngr
is installed:
sudo apt-get install dirmngr
If this still does not solve the problem:
sudo apt remove gpg
sudo apt install gnupg1
You should now be able to re-run the key setup command above.
sudo apt update
sudo apt install ros-noetic-desktop-full
This will take some time. Go grab a coffee :coffee:.
Once that is done, let us verify the installation. You must source this script in every bash terminal you use ROS in:
source /opt/ros/noetic/setup.bash
To automatically source it whenever you open a new terminal, add it to your .bashrc:
echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
source ~/.bashrc
Note: If you were in a virtual environment, you will have to re-activate your virtual environment after sourcing your .bashrc
To verify the installation, run roscore
in the terminal. This should start a roslaunch server without any errors. Feel free to kill the server (Ctrl+C) now.
Congratulations! You have just set up ROS. Now let's install the the dependencies.
Install VcXsrv: https://sourceforge.net/projects/vcxsrv/
Add the following to your .bashrc:
# Forward GUI windows to vcxsrv
export DISPLAY=:0
export LIBGL_ALWAYS_INDIRECT=
Start VcXsrv without native OpenGL:
Request spot.urdf and .stl mesh files from Boston Dynamics in order to be able to utilize the real-time RViz visualization of Spot's state.
The directory structure must be as follows for compatibility with the rviz_display.launch
file:
workspace_directory/
...
spot_urdf/
...
link_models/
base.stl
fl.lleg.stl
fr.hip.stl
...
hl.uleg.stl
hr.lleg.stl
urdf/
spot.urdf
Make install_dependencies.sh
executable and run it:
cd ~/spot-ros-wrapper/src/install_script/
chmod +x install_dependencies.sh
./install_dependencies.sh
Now, go to your catkin workspace directory (e.g. ~/spot-ros-wrapper
) and setup your catkin workspace:
cd ~/spot-ros-wrapper
catkin config --init --merge-devel --cmake-args -DCMAKE_BUILD_TYPE=Release
catkin config --extend /opt/ros/noetic
Note: The structure of a catkin workspace must be as follows. For more info on catkin workspaces and packages, consult the tutorials.
workspace_directory/
src/
package_1/
CMakeLists.txt
package.xml
scripts/
src/
...
package_n/
CMakeLists.txt
package.xml
scripts/
src/
build/ -- Auto-generated by catkin build
devel/ -- Auto-generated by catkin build
Go to your catkin workspace directory, and build
cd ~/spot-ros-wrapper
catkin build
After the build finishes, you must source the environment. This must be done every time after building.
source ~/spot-ros-wrapper/devel/setup.bash
Now let us start the ROS Wrapper Node. We first need to run roscore
:
roscore
That process must be up and running whenever you want to run ROS Nodes.
Open a new terminal, source your virtual environment and source the latest build:
# In a new terminal
activate_venv spot_venv
cd ~/spot-ros-wrapper
source devel/setup.bash
And finally, let us start the ROS Wrapper node:
rosrun spot_ros_interface spot_ros_interface.py --username USERNAME --password PASSWORD 192.168.80.3
Note: Spot's default IP address is 192.168.80.3 over WiFi, and 10.0.0.3 over ethernet.
Note: You must be able to ping Spot's IP addess in order to communicate. The easiest way to do so is to connect to Spot's Wi-Fi hotspot directly, or to its ethernet port. For more information, reference Spot's instruction manuals on ways to communicate.
With the ROS wrapper running, open a new terminal and run keyboard_teleop.py
in the spot_ros_interface
ROS package:
rosrun spot_ros_interface keyboard_teleop.py
and follow the instructions on screen.
Ensure spot_ros_interface.py
is running.
Note: If Spot is in a faulty state and/or upside down, make sure to call the self-right command first (from the keyboard_teleop application, press "r").
roslaunch spot_urdf rviz_display.launch
Potential Issues:
Spot model RViz visualization is white and not oriented properly
The occupancy grid is not being displayed:
occupancy_grid
topic.Contribute
This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments.