anujjain-dev / unitree-go2-ros2

Developing robot description model for Unitree Go2 robot configured with Champ Legged Robots Research Repository
20 stars 0 forks source link
champ gazebo go2 ros2 unitree unitree-go2

unitree go2 ros2 - champ config

This package contains the configuration files for the Unitree Go2 robot configured with the CHAMP controller in ROS 2 (humble). It includes development of config package along with upgrade in robot description model for ROS 2 Humble distribution.

Unitree Go2:

Unitree Robotics is focusing on the R&D, production, and sales of consumer and industry-class high-performance general-purpose legged and humanoid robots, six-axis manipulators, and so on. We attaches great importance to independent research and development and technological innovation, fully self-researching key core robot components such as motors, reducers, controllers, LIDAR and high-performance perception and motion control algorithms, integrating the entire robotics industry chain.

CHAMP 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".

Resources:

Tested on:

Current state of package:

1. Installation

1.0 Install ROS-based dependencies:

sudo apt install ros-humble-gazebo-ros2-control
sudo apt install ros-humble-xacro
sudo apt install ros-humble-robot-localization
sudo apt install ros-humble-ros2-controllers
sudo apt install ros-humble-ros2-control
sudo apt install ros-humble-velodyne
sudo apt install ros-humble-velodyne-gazebo-plugins
sudo apt-get install ros-humble-velodyne-description

1.1 Clone and install all dependencies:

sudo apt install -y python3-rosdep
rosdep update

cd <your_ws>/src
git clone https://github.com/anujjain-dev/unitree-go2-ros2.git
cd <your_ws>
rosdep install --from-paths src --ignore-src -r -y

1.2 Build your workspace:

cd <your_ws>
colcon build
. <your_ws>/install/setup.bash

2. Quick Start

You don't need a physical robot to run the following demos. Make sure you have ros2_control, gazebo ros, controller manager packages installed in your ros2 setup.

2.1 Gazebo demo: Run the Gazebo environment

ros2 launch go2_config gazebo.launch.py

Go2 Gazebo Launch

2.2 Walking demo in RVIZ: Run the gazebo along with rviz

ros2 launch go2_config gazebo.launch.py rviz:=true

Go2 Gazebo RViz Launch

2.3 Run the teleop node:

ros2 run teleop_twist_keyboard teleop_twist_keyboard

https://github.com/user-attachments/assets/bcfeec70-12c5-49b8-b7a7-da4fa9b6dea5

2.4 Go2 Velodyne Config Gazebo demo: Run the Gazebo environment

ros2 launch go2_config gazebo_velodyne.launch.py 

Go2 Velodyne Gazebo Launch

2.5 Go2 Veldyne Config Walking/PointCloud demo in RVIZ: Run the gazebo along with rviz

ros2 launch go2_config gazebo_velodyne.launch.py rviz:=true

Note: set point cloud topic to /velodyne_points

Go2 Velodyne Gazebo RViz Launch

2.6 Go2 Hokoyu 2D LiDAR Config Gazbeo demo: Run the Gazebo environment

NOTE: To use Laser instead of 3D Velodyne LiDAR, comment <xacro:include filename="$(find go2_description)/xacro/velodyne.xacro"/> and uncomment <xacro:include filename="$(find go2_description)/xacro/laser.xacro"/> in robot_VLP.xacro file located inside robots/description/go2_description/xacro/ folder.

ros2 launch go2_config gazebo_velodyne.launch.py 

To Run the gazebo along with rviz

ros2 launch go2_config gazebo_velodyne.launch.py rviz:=true

3. Tuning gait parameters

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

CHAMP Setup Assistant

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'feat: Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

Acknowledgements

This project builds upon and incorporates work from the following projects:

We are grateful to the developers and contributors of these projects for their valuable work.