All Projects → chvmp → Champ

chvmp / Champ

Licence: bsd-3-clause
𓃡 Quadruped Robot based on MIT Cheetah I

Projects that are alternatives of or similar to Champ

Elevation mapping
Robot-centric elevation mapping for rough terrain navigation
Stars: ✭ 520 (-1.14%)
Mutual labels:  robotics, ros
Ros Sensor Fusion Tutorial
An in-depth step-by-step tutorial for implementing sensor fusion with robot_localization! 🛰
Stars: ✭ 306 (-41.83%)
Mutual labels:  robotics, ros
Se2lam
(ICRA 2019) Visual-Odometric On-SE(2) Localization and Mapping
Stars: ✭ 285 (-45.82%)
Mutual labels:  robotics, ros
Free gait
An Architecture for the Versatile Control of Legged Robots
Stars: ✭ 263 (-50%)
Mutual labels:  robotics, ros
Awesome Robotics
A curated list of awesome links and software libraries that are useful for robots.
Stars: ✭ 478 (-9.13%)
Mutual labels:  robotics, ros
Bonnet
Bonnet: An Open-Source Training and Deployment Framework for Semantic Segmentation in Robotics.
Stars: ✭ 274 (-47.91%)
Mutual labels:  robotics, ros
Cherry Autonomous Racecar
Implementation of the CNN from End to End Learning for Self-Driving Cars on a Nvidia Jetson TX1 using Tensorflow and ROS
Stars: ✭ 294 (-44.11%)
Mutual labels:  robotics, ros
rosbots setup tools
Set up ROS, OpenCV and other ROSbots modules for your ROBbots robot
Stars: ✭ 97 (-81.56%)
Mutual labels:  robotics, ros
Ifopt
An Eigen-based, light-weight C++ Interface to Nonlinear Programming Solvers (Ipopt, Snopt)
Stars: ✭ 372 (-29.28%)
Mutual labels:  robotics, ros
Handeye calib camodocal
Easy to use and accurate hand eye calibration which has been working reliably for years (2016-present) with kinect, kinectv2, rgbd cameras, optical trackers, and several robots including the ur5 and kuka iiwa.
Stars: ✭ 364 (-30.8%)
Mutual labels:  robotics, ros
Gym Gazebo2
gym-gazebo2 is a toolkit for developing and comparing reinforcement learning algorithms using ROS 2 and Gazebo
Stars: ✭ 257 (-51.14%)
Mutual labels:  robotics, ros
Pinocchio
A fast and flexible implementation of Rigid Body Dynamics algorithms and their analytical derivatives
Stars: ✭ 432 (-17.87%)
Mutual labels:  robotics, ros
Awesome Weekly Robotics
A list of projects that were or will be featured in Weekly Robotics newsletter
Stars: ✭ 255 (-51.52%)
Mutual labels:  robotics, ros
Camlasercalibratool
Extrinsic Calibration of a Camera and 2d Laser
Stars: ✭ 277 (-47.34%)
Mutual labels:  robotics, ros
ros-docker-images
🐳 Bring ROS to any Linux distributions.
Stars: ✭ 15 (-97.15%)
Mutual labels:  robotics, ros
Orb slam 2 ros
A ROS implementation of ORB_SLAM2
Stars: ✭ 294 (-44.11%)
Mutual labels:  robotics, ros
fmi adapter
Integrating functional mock-up units (FMUs) in ROS nodes
Stars: ✭ 26 (-95.06%)
Mutual labels:  robotics, ros
igvc-software
The code base for the RoboNav team's IGVC robot.
Stars: ✭ 78 (-85.17%)
Mutual labels:  robotics, ros
Gpd
Detect 6-DOF grasp poses in point clouds
Stars: ✭ 330 (-37.26%)
Mutual labels:  robotics, ros
Tf Pose Estimation
Deep Pose Estimation implemented using Tensorflow with Custom Architectures for fast inference.
Stars: ✭ 3,856 (+633.08%)
Mutual labels:  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:

  • Fully Autonomous (using ROS navigation Stack).
  • Setup-assistant to configure newly built robots.
  • Collection of pre-configured URDFs like Anymal, MIT Mini Cheetah, Boston Dynamic's Spot and LittleDog.
  • Gazebo simulation environment.
  • Compatible with DIY quadruped projects like SpotMicroAI and OpenQuadruped.
  • Demo Applications like TOWR and chicken head stabilization.
  • Lightweight C++ header-only library that can run on both SBC and micro-controllers.

Tested on:

  • Ubuntu 16.04 (ROS Kinetic)
  • Ubuntu 18.04 (ROS Melodic)

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:

  • Click '2D Nav Goal'.

  • Click and drag at the position you want the robot to go.

    champ

  • Save the map by running:

    roscd champ_config/maps
    rosrun map_server map_saver
    

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:

  • Click '2D Nav Goal'.

  • Click and drag at the position you want the robot to go.

    champ

3. Running your own robot:

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

Linux Machine

  • Use this ROS package to calculate the joint angles and send it to a hardware interface to control your actuators. You can follow these guidelines to create your actuators' interface.

Lightweight Version

  • Run CHAMP's lightweight version on Teensy series microcontrollers and use it to directly control your actuators.

3.1 Generate robot configuration

  • First generate a configuration package using champ_setup_assistant. Follow the instructions in the README to configure your own robot. The generated package contains:

    • URDF path to your robot.
    • Joints and Links map to help the controller know the semantics of the robot.
    • Gait parameters.
    • Hardware Drivers.
    • Navigation parameters (move_base, amcl and gmapping).
    • Microcontroller header files for gait and lightweight robot description. This only applies to robot builds that use microcontroller to run the quadruped controller.

    As a reference, you can check out the collection of robots that have been pre-configured here. In the list are some of the popular quadruped robots like Anymal, MIT Mini Cheetah, Boston Dynamic's LittleDog, and SpotMicroAI. Feel free to download the configuration packages in your catkin workspaces 'src' directory to try.

  • Next, build your workspace so your newly generated package can be found:

    cd <your_ws>
    catkin_make
    

3.2 Base Driver:

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

roslaunch <myrobot_config> bringup.launch

Available Parameters:

  • rviz - Launch together with RVIZ. Default: false

  • lite - Always set this to true if you're using a microcontroller to run the algorithms. Default false.

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:

  • Click '2D Nav Goal'.

  • Click and drag at the position you want the robot to go.

    champ

  • Save the map by running:

    roscd <myrobot_config>/maps
    rosrun map_server map_saver
    

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:

  • Click '2D Nav Goal'.

  • Click and drag at the position you want the robot to go.

    champ

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>
  • Every instance of the spawned robot must have a unique robot name to prevent the topics and transforms from clashing.

4. Tuning gait parameters

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

CHAMP Setup Assistant

  • Knee Orientation - How the knees should be bent. You can can configure the robot to follow the following orientation .>> .>< .<< .<> where dot is the front side of the robot.

  • Max Linear Velocity X (meters/second) - Robot's maximum forward/reverse speed.

  • Max Linear Velocity Y (meteres/second) - Robot's maximum speed when moving sideways.

  • Max Angular Velocity Z (radians/second)- Robot's maximum rotational speed.

  • Stance Duration (seconds)- How long should each leg spend on the ground while walking. You can set this to default(0.25) if you're not sure. The higher the stance duration the further the displacement is from the reference point.

  • Leg Swing Height (meters)- Trajectory height during swing phase.

  • Leg Stance Height (meters)- Trajectory depth during stance phase.

  • Robot Walking Height (meters) - Distance from hip to the ground while walking. Take note that setting this parameter too high can get your robot unstable.

  • CoM X Translation (meters) - You can use this parameter to move the reference point in the X axis. This is useful when you want to compensate for the weight if the center of mass is not in the middle of the robot (from front hip to rear hip). For instance, if you find that the robot is heavier at the back, you'll set a negative value to shift the reference point to the back.

  • Odometry Scaler - You can use this parameter as a multiplier to the calculated velocities for dead reckoning. This can be useful to compensate odometry errors on open-loop systems. Normally this value ranges from 1.0 to 1.20.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].