第4章 机器人仿真
mbot 小车 Gazebo 仿真
第四章 mbot 小车 Gazebo 仿真环境:差分驱动底盘的启动与键盘遥控演示。

工作空间挂载与编译
上面的 mbot 差分驱动仿真由 src/chap4/ 下的 3 个功能包提供,需要先挂载到 catkin
工作空间并编译:
| 功能包 | 作用 |
|---|---|
mbot_description |
mbot 的 URDF/xacro 模型(差分驱动底盘 + 各传感器扩展) |
mbot_gazebo |
Gazebo 仿真环境与 launch 文件(world + 模型加载) |
mbot_teleop |
键盘遥控节点(发布 /cmd_vel) |
1. 克隆仓库并切换分支
git clone https://github.com/OpenHUTB/ros2.git ~/ros2
cd ~/ros2
git checkout feat/chap4-gazebo-sim # 本章代码所在分支(若已合并主分支可跳过)
2. 创建 catkin 工作空间并软链接功能包
mkdir -p ~/catkin_ws/src
ln -s ~/ros2/src/chap4/mbot_description ~/catkin_ws/src/mbot_description
ln -s ~/ros2/src/chap4/mbot_gazebo ~/catkin_ws/src/mbot_gazebo
ln -s ~/ros2/src/chap4/mbot_teleop ~/catkin_ws/src/mbot_teleop
若不想用软链接,也可
cp -r复制到~/catkin_ws/src/。
3. 编译并加载环境
cd ~/catkin_ws
catkin_make
source devel/setup.bash
前置依赖:ROS1 桌面完整版(Noetic 或 Melodic)、
gazebo_ros_pkgs、xacro、joint_state_publisher、robot_state_publisher等。
4. 验证包已就绪
rospack find mbot_description mbot_gazebo mbot_teleop
动图效果完整复现指南
以下是 demo_chap4.gif 的闭环复现步骤:先启动差分驱动小车,再用键盘遥控驱动它运动。
步骤 1(底盘物理环境):启动 Gazebo 差分驱动小车
source ~/catkin_ws/devel/setup.bash
roslaunch mbot_gazebo view_mbot_gazebo_empty_world.launch
Gazebo 中会出现一辆两轮差分驱动 mbot 小车(后置万向轮)。如需带场景的世界,可改用:
roslaunch mbot_gazebo view_mbot_gazebo_play_ground.launch # 带障碍物的操场
roslaunch mbot_gazebo view_mbot_gazebo_room.launch # 室内房间
步骤 2(键盘遥控):启动 teleop 键盘遥控节点
source ~/catkin_ws/devel/setup.bash
roslaunch mbot_teleop mbot_teleop.launch
该节点读取键盘按键,发布 geometry_msgs/Twist 到 /cmd_vel,驱动差速底盘运动。
步骤 3(遥控交互):键位映射
在键盘遥控终端窗口按下对应按键(无需回车):
| 按键 | 动作 |
|---|---|
i |
前进 |
, |
后退 |
j |
原地左转 |
l |
原地右转 |
u |
前进 + 左转 |
o |
前进 + 右转 |
m |
后退 + 右转 |
. |
后退 + 左转 |
k 或 空格 |
立即停止(急停) |
q / z |
最大速度提高 / 降低 10% |
w / x |
线速度提高 / 降低 10% |
e / c |
角速度提高 / 降低 10% |
焦点需停留在键盘遥控终端窗口内;松开方向键后默认平滑减速,
k/空格键为强制停止。
步骤 4(预期现象)
- 按
i:小车在 Gazebo 中向前直线行驶,与动图中的前进画面一致。 - 按
j/l:小车原地左转 / 右转,与动图中的转向画面一致。 - 按
k或空格:小车立即刹车停下。 - 组合键
u/o/m/.:小车走出弧线轨迹,与动图中的曲线运动一致。
如需查看底层数据流,可另开终端:
rostopic echo /cmd_vel # 键盘遥控发出的速度指令
rostopic echo /odom # 里程计输出
Gazebo 移动机器人平台搭建与首次仿真
本章介绍如何在 Gazebo Classic 11 中搭建一个可运行的 ROS 移动机器人平台,并完成从模型、传感器到运动控制的首次仿真。
本章配套完整功能包:
src/chap4/mybot_gazebo/
教程内容:
- 检查 Ubuntu、ROS Noetic、Gazebo 和插件依赖;
- 创建 Catkin 工作空间并编译
mybot_gazebo; - 使用 URDF/xacro 建立两轮差速机器人;
- 配置差速驱动、里程计、激光雷达和 RGB 相机;
- 编写 world 和 launch 文件;
- 启动 Gazebo 并检查话题、TF 和传感器;
- 使用手动速度命令和自动正方形轨迹验证机器人;
- 调整参数、排查故障,并扩展到 SLAM 和导航。