chvmp / champ

MIT Cheetah I Implementation
BSD 3-Clause "New" or "Revised" License
1.47k stars 342 forks source link
gazebo gazebo-ros gazebo-simulator legged-robotics legged-robots quadruped quadruped-robot-gaits quadruped-simulation robotics ros

champ Build Status

ROS Packages for CHAMP Quadruped Controller.

champ

CHAMP is an open source development framework for building new quadrupedal robots and developing new control algorithms. The control framework is based on "Hierarchical controller for highly dynamic locomotion utilizing pattern modulation and impedance control : implementation on the MIT Cheetah robot".

Core Features:

Tested on:

1. Installation

1.1 Clone and install all dependencies:

sudo apt install -y python-rosdep
cd <your_ws>/src
git clone --recursive https://github.com/chvmp/champ
git clone https://github.com/chvmp/champ_teleop
cd ..
rosdep install --from-paths src --ignore-src -r -y

If you want to use any of the pre-configured robots like Anymal, Mini Cheetah, or Spot, follow the instructions here.

1.2 Build your workspace:

cd <your_ws>
catkin_make
source <your_ws>/devel/setup.bash

2. Quick Start

You don't need a physical robot to run the following demos. If you're building a physical robot, you can find out more how to configure and run a new robot in step 3.

2.1 Walking demo in RVIZ:

2.1.1 Run the base driver:

roslaunch champ_config bringup.launch rviz:=true

2.1.2 Run the teleop node:

roslaunch champ_teleop teleop.launch

If you want to use a joystick add joy:=true as an argument.

2.2 SLAM demo:

2.2.1 Run the Gazebo environment:

roslaunch champ_config gazebo.launch 

2.2.2 Run gmapping package and move_base:

roslaunch champ_config slam.launch rviz:=true

To start mapping:

2.3 Autonomous Navigation:

2.3.1 Run the Gazebo environment:

roslaunch champ_config gazebo.launch 

2.3.2 Run amcl and move_base:

roslaunch champ_config navigate.launch rviz:=true

To navigate:

3. Running your own robot:

There are two ways to run CHAMP on a real robot:

Linux Machine

Lightweight Version

3.1 Generate robot configuration

3.2 Base Driver:

This will run the quadruped controller and all sensor/hardware drivers:

roslaunch <myrobot_config> bringup.launch

Available Parameters:

Example Usage:

View your newly configured robot:

roslaunch <myrobot_config> bringup.launch rviz:true

Run real robot with a microcontroller:

roslaunch <myrobot_config> bringup.launch lite:=true

3.3 Creating a map:

The base driver described in 3.2 must be running to run gmapping and move_base.

Run gmapping package and move_base:

roslaunch <myrobot_config> slam.launch

To open RVIZ and view the map:

roscd champ_navigation/rviz 
rviz -d navigate.rviz

To start mapping:

3.4 Autonomous Navigation:

The base driver described in 3.2 must be running to run amcl and move_base.

Run amcl and move_base:

roslaunch <myrobot_config> navigate.launch

To open RVIZ and view the map:

roscd champ_navigation/rviz 
rviz -d navigate.rviz

To navigate:

3.5 Running your robot in Gazebo

Run Gazebo and the base driver in simulation mode:

roslaunch <myrobot_config> gazebo.launch

You can also check out this pull request as an example.

3.6 Spawning multiple robots in Gazebo

Run Gazebo and default simulation world:

roslaunch champ_gazebo spawn_world.launch 

You can also load your own world file by passing your world's path to 'gazebo_world' argument:

roslaunch champ_gazebo spawn_world.launch gazebo_world:=<path_to_world_file>

Spawning a robot:

roslaunch champ_config spawn_robot.launch robot_name:=<unique_robot_name> world_init_x:=<x_position> world_init_y:=<y_position>

4. Tuning gait parameters

The gait configuration for your robot can be found in /gait/gait.yaml.

CHAMP Setup Assistant