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: The main repository with the following submodules.
- wolf-setup: This repository, containing scripts and installation utilities for WoLF.
- wolf_descriptions: Robot and sensor descriptions used with WoLF.
- wolf_gazebo_resources: Gazebo models and simulation resources.
- wolf_hardware_interface: Hardware interface for
ros_control. - wolf_gazebo_interface: Gazebo hardware interface for
ros_control. - wolf_controller: ROS and ROS2 controller plugin.
- wolf_controller_core: Core controller.
- wolf_controller_utils: Common controller utilities.
- wolf_wbid: Whole-body inverse dynamics components.
- wolf_planner: MPC-based planner modules for WoLF.
- wolf_estimation: Estimation modules (state and perception related).
- wolf_rviz_plugin: RViz plugin for WoLF interactions.
- wolf_msgs: ROS messages and service definitions.
- rt_logger: Real-time logging utilities.
- rt_gui: Runtime GUI tooling.
You can run WoLF from source, 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
Use source installation if you want to develop or tune the framework.
- ROS1 Noetic branch:
ros1-noetic-pub - ROS2 Humble branch:
ros2-humble-pub
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
git clone -b ros1-noetic-pub https://github.com/graiola/wolf.git
cd wolf
git submodule update --init --recursive
cd ~/catkin_ws
source /opt/ros/noetic/setup.bash
catkin config --cmake-args -DCMAKE_BUILD_TYPE=Release
catkin build
source devel/setup.bashmkdir -p ~/ros2_ws/src
cd ~/ros2_ws/src
git clone -b ros2-humble-pub https://github.com/graiola/wolf.git
cd wolf
git submodule update --init --recursive
cd ~/ros2_ws
source /opt/ros/humble/setup.bash
colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release
source install/setup.bashTo 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./demos/ros2.sh: ROS2 demo
- It could be necessary to restart the computer after running
install_docker.sh. - Use the
install_nvidia.shscript in thesupportfolder 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
If you want to test a different quadruped robot check out wolf_descriptions.
Check the changelog here





