nav_10mb.mp4
- Simulation in an indoor environment in Gazebo Harmonic
- Navigation (using Nav2 Stack) from Point A to Point B, using "Nav2goal".
- Controller plugin:
dwb_core::DWBLocalPlanner(configured asFollowPath) - Plugin based on a Dynamic Window Approach (DWA) style algorithm.
- Took a pre-built indoor- environment from Fuel model available for Gazebo.
- Launched the robot and Indoor environment in Gazebo Harmonic.
- Made some necessary changes in the world for simulation ready.
- Built the map using slam toolbox.
- Launched Nav2_bringup with:
(a) Map-server: loads my saved map.
(b) amcl for localization on that map.
(c) planner_server, controller_server, bt_navigator, etc. for navigation
(d) rviz2 for visualization and setting goals using "Nav2goal".
(e) Local & global costmaps configured in params_file.
(f) Fine-tune few parameters in params_file in order to get good results.
- Ubuntu 24.04
- ROS 2 Jazzy Jalisco
- Gazebo Sim Harmonic
- Install ROS2 Dependencies
sudo apt update
sudo apt install ros-jazzy-gazebo-ros2-control
sudo apt install ros-jazzy-xacro
sudo apt install ros-jazzy-robot-localization
sudo apt install ros-jazzy-ros2-controllers
sudo apt install ros-jazzy-ros2-control
sudo apt install ros-jazzy-velodyne
sudo apt install ros-jazzy-velodyne-description- Clone the Go2 Simulation package
cd ~/practice/src
git clone https://github.com/RB0609/Unitree_Go2_Edu.git- Install the Dependencies
cd ~/practice
rosdep update
rosdep install --from-paths src --ignore-src -r -y- Build the workspace
cd ~/practice
colcon build
source install/setup.bash- Steps to launch the simulation file in Gazebo Harmonic and Rviz.
Gazebo Harmonic Simulation:
ros2 launch unitree_go2_sim unitree_go2_launch.py - Follow these before Performing the navigation.
In go2_params.yaml file which is in scripts folder under unitree_go2_sim.
unitree_go2_sim/
└── scripts/
└── go2_params.yaml
map_server:
ros__parameters:
use_sim_time: true
yaml_filename: "<path_to_file location>/map.yaml" #Here choose your own folder, where you store "map.yaml" file
#topic_name: "map"
#frame_id: "map"First launch this file in Terminal1:
ros2 launch nav2_bringup rviz_launch.py For below code, careful with file location
map:=<path_to_file_location>/map.yaml
params_file:=<path_to_file_location>/go2_params.yaml
below is the example usage
in Terminal2:
ros2 launch nav2_bringup bringup_launch.py use_sim_time:=true map:=/home/rakesh/map.yaml params_file:=/home/rakesh/practice/src/unitree_go2_ros2/unitree_go2_sim/scripts/go2_params.yaml- Working on ekf node
(a) Fine-tuning the parameters for better result
(b) Focusing on robot's state estimation - Currently focusing on improvement of robot's gait
- Planning to perform Sim2Real with Unitree go2 Edu
For reference I used this github repo, unitree go2 edu simulation in Gazebo and Harmonic.
https://github.com/khaledgabr77/unitree_go2_ros2For reference, in order to perform navigation of unitree go2 edu robot, I used the below repo as reference,
https://github.com/Sayantani-Bhattacharya/unitree_go2_navHere's the link for the Gazebo model
https://app.gazebosim.org/OpenRobotics/fuel/models/DepotNav2 stack doc
https://docs.nav2.org/index.html