This repo contains the setup for the whole-body controller presented in the following papers raiola2020simple, raiola2022wolf:
@article{raiola2020simple,
title={A simple yet effective whole-body locomotion framework for quadruped robots},
author={Raiola, Gennaro and Mingo Hoffman, Enrico and Focchi, Michele and Tsagarakis, Nikos and Semini, Claudio},
journal={Frontiers in Robotics and AI},
volume={7},
pages={159},
year={2020},
publisher={Frontiers}
}
@article{raiola2022wolf,
title={WoLF: the Whole-body Locomotion Framework for Quadruped Robots},
author={Raiola, Gennaro and Focchi, Michele and Hoffman, Enrico Mingo},
journal={arXiv preprint arXiv:2205.06526},
year={2022}
}
WoLF provides several features for your quadruped robotic friend:
- wolf-setup: This repository, containing scripts and installation utilities for WoLF.
- wolf_descriptions: It contains robot and sensor descriptions used with WoLF. Please check out this repository If you want to add your own robot to WoLF.
- wolf_descriptions_extra: Extra robot models.
- wolf_gazebo_resources: Gazebo models and other goodies to create interesting simulation environments.
- wolf_hardware_interface: It implements a hardware interface for
ros_control
to be used with WoLF. - wolf_gazebo_interface: Gazebo hardware interface for
ros_control
. - wolf_unitree_interface: Unitree hardware interface for WoLF based on
wolf_hardware_interface
andros_control
. - wolf_navigation: A package interfacing the ROS navigation stack with WoLF.
- wolf_planner: MPC planner for WoLF based on ocs2.
- wolf_rviz_plugin: A plugin for rviz to interact with some functionalities of WoLF.
- wolf_msgs: ROS message and service definitions.
- wolf_controller_utils: WoLF common utilities.
You can run WoLF by installing the debian packages on your computer or with a docker container. To clone this repository run the following command:
git clone https://github.com/graiola/wolf-setup.git
To download the image from docker-hub and launch WoLF within a docker container, run the following script:
./run_docker.sh
You can see what are the available options in the script with the following command:
./run_docker.sh --help
In case you don't have docker installed on your computer, you can run the following script:
./support/install_docker.sh
This script will install docker and its dependencies.
We prepared some demos to run directly within the docker container:
./demos/2d_navigation.sh
: Run an indoor 2D navigation demo./demos/3d_navigation.sh
: Run an outdoor 3D navigation demo./demos/manipulation.sh
: Run spot with a kinova arm mounted on top./demos/locomotion.sh
: Run a demo with stairs
- It could be necessary to restart the computer after running
install_docker.sh
. - Use the
install_nvidia.sh
script in thesupport
folder if you are experiencing the following problem:could not select device driver "" with capabilities: [[gpu]]
. - If you are experiencing this problem
nvidia-container-cli initialization error nvml error driver not loaded
, it probably means that your computer does not have the latest nvidia-drivers installed, so be sure that they are installed and updated to the last version.
To install the required dependencies (including ROS) and the WoLF debian packages run the following:
./install.sh
After the installation, update your bash enviroment with the following command:
source ~/.bashrc
WoLF provides four interfaces to move the robot:
- A PS3 joypad interface:
roslaunch wolf_controller wolf_controller_bringup.launch input_device:=ps3
- A XBox joypad interface:
roslaunch wolf_controller wolf_controller_bringup.launch input_device:=xbox
- A keyboard interface:
roslaunch wolf_controller wolf_controller_bringup.launch input_device:=keyboard
- A spacemouse interface:
roslaunch wolf_controller wolf_controller_bringup.launch input_device:=spacemouse
A twist topic is always active and listening for velocity commands on /robot_name/wolf_controller/twist
. This topic can be used to send twist commands at a lower priority than the above mentioned interfaces.
It can also be used to send move_base
commands if you want to integrate WoLF with the ROS navigation stack (see wolf_navigation for an example).
To make the robot stand up, press the start
button on the joypad or press the enter
key if you are using the keyboard.
If you want to test a different quadruped robot check out wolf_descriptions.
Check the changelog here