安装

安装链接:GZ Harmonic官方安装链接-ubuntu

sudo apt update
sudo apt install lsb-release

sudo curl https://packages.osrfoundation.org/gazebo.gpg --output /usr/share/keyrings/pkgs-osrf-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/pkgs-osrf-archive-keyring.gpg] http://packages.osrfoundation.org/gazebo/ubuntu-stable $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/gazebo-stable.list > /dev/null
sudo apt-get update
sudo apt-get install gz-ionic

sudo apt update

sudo apt install gz-harmonic

sudo apt install ros-${ROS_DISTRO}-ros-gz

启动 gazebo

gz sim

也可以直接指定 sdf(指定场景)

gz sim sdf shapes.sdf

机器人仿真示例

ros2 launch ros_gz_sim_demos diff_drive.launch.py

# 然后使用ros2 topic list查看当前topic
ros2 topic list | grep cmd_vel
# 得到
#/model/vehicle_blue/cmd_vel
#/model/vehicle_green/cmd_vel

# 控制蓝色小车
ros2 run teleop_twist_keyboard teleop_twist_keyboard --ros-args -r \
  cmd_vel:=/model/vehicle_blue/cmd_vel

# 控制绿色小车
ros2 run teleop_twist_keyboard teleop_twist_keyborad --ros-args -r \
  cmd_vel:=/model/vehicle_green/cmd_vel

传感器仿真实例

ros2 launch ros_gz_sim_demos rgbd_camera_bridge.launch.py

安装和测试 TurtleBot3

安装 TurtleBot3 相关包

sudo apt update
# TurtleBot3核心包
sudo apt install ros-jazzy-turtlebot3*

# 安装导航相关包
sudo apt install ros-jazzy-navigation2 ros-jazzy-nav2-bringup

# 安装SLAM相关包
sudo apt install ros-jazzy-slam-toolbox

# 安装Dynamixel SDK (TurtleBot3电机控制)
sudo apt install ros-jazzy-dynamixel-sdk

设置环境变量

设置 TurtleBot3 模型

# 设置TurtleBot3模型
echo 'export TURTLEBOT3_MODEL=waffle' >> ~/.bashrc
echo 'export ROS_DOMAIN_ID=30 #TURTULEBOT3' >> ~/.bashrc
echo 'export GAZEBO_MODEL_PATH=$GAZEBO_MODEL_PATH:/opt/ros/jazzy/share/turtlebot3_gazebo/models' >> ~/.bashrc

source ~/.bashrc

echo $TURTLEBOT3_MODEL

可选的 TurtleBot3 模型:

  • burger:最小型号
  • waffle:标准型号
  • waffle_pi:带激光雷达的型号

测试基础仿真

启动 Gazebo 仿真

# 启动
ros2 launch turtlebot3_gazebo turtlebot3_world.launch.py

启动遥控节点

# 新开终端,启动键盘控制
ros2 run turtlebot3_teleop teleop_keyboard

SLAM 建图演示

启动 SLAM

# 启动Gazebo仿真
ros2 launch turtlebot3_gazebo turtlebot3_world.launch.py

# 启动SLAM 启动Rviz可视化
ros2 launch turtlebot3_cartographer cartographer.launch.py use_sim_time:=True

# 键盘控制机器人移动
ros2 run turtlebot3_teleop teleop_keyboard

保存地图

ros2 run nav2_map_server map_saver_cli -f ~/my_map

导航演示

使用保存的地图进行导航

# 启动Gazebo仿真
ros2 launch turtlebot3_gazebo turtlebot3_world.launch.py

# 启动导航
ros2 launch turtlebot3_navigation2 navigation2.launch.py use_sim_time:=True\
  map:=$HOME/my_map.yaml

故障排除

检查安装状态

# 检查TurtleBot3包
ros2 pkg list | grep turtlebot3

# 检查环境变量
echo $TURTLEBOT3_MODEL
echo $GAZEBO_MODEL_PATH

# 检查话题
ros2 topic list

# 检查节点
ros2 node list

常见问题解决

Gazebo 启动失败

# 检查Gazebo版本
gazebo --version

# 重置Gazebo
killall gzserver gzclient

模型加载失败

# 手动设置模型路径
export GAZEBO_MODEL_PATH=$GAZEBO_MODEL_PATH:/opt/ros/jazzy/share/turtlebot3_gazebo/models

# 或者重新安装模型
sudo apt reinstall ros-jazzy-turtlebot3-gazebo

找不到 launch 文件

# 查找launch文件位置
find /opt/ros/jazzy -name "*.launch.py" | grep turtlebot3

# 或者使用ros2命令查找
ros2 pkg prefix turtlebot3_gazebo