目录
++[目录... 1](#目录... 1)++
++[第一章 ROS2的仿真工具Gazebo. 2](#第一章 ROS2的仿真工具Gazebo. 2)++
++[1.1 Gazebo简介... 2](#1.1 Gazebo简介... 2)++
++[1.2安装Gazebo. 2](#1.2安装Gazebo. 2)++
++[1.3 Gazebo示例仿真... 3](#1.3 Gazebo示例仿真... 3)++
++[第二章 Gazebo的客户端程序GUI 4](#第二章 Gazebo的客户端程序GUI 4)++
++[2.1 GUI的简介及相关指令... 4](#2.1 GUI的简介及相关指令... 4)++
++[2.2 GUI的界面,实例... 5](#2.2 GUI的界面,实例... 5)++
++[2.2.1 Gazebo 窗口的工具栏... 5](#2.2.1 Gazebo 窗口的工具栏... 5)++
++[2.2.2 场景... 5](#2.2.2 场景... 5)++
++[2.2.3 右边栏... 6](#2.2.3 右边栏... 6)++
++[2.3 实例控制GUI小车... 6](#2.3 实例控制GUI小车... 6)++
++[2.4实例控制GUI小车... 7](#2.4实例控制GUI小车... 7)++
第一章 ROS2的仿真工具Gazebo
1.1 Gazebo简介
Gazebo 知识点整理(精简通顺版)
Gazebo 是由 OpenRobotics 开发维护的免费三维机器人物理仿真软件,也是 ROS 的主要支撑工具,常与 ROS 联合使用。为保证运行稳定可靠,计算机硬件建议优先使用 NVIDIA 显卡。
Gazebo 能够模拟高度逼真的机器人与环境,支持设置重力、摩擦力、弹性系数等动力学参数,并在仿真过程中持续生成各类环境与传感器数据。
物理引擎
Gazebo 自身不内置物理引擎,而是集成并支持切换多种第三方引擎,用于处理机器人与环境的交互(如重力、接触碰撞、车轮扭矩等)。
- 默认引擎:ODE(Open Dynamics Engine)
- 可选引擎:Bullet、DART、Simbody
- 深入使用时,可在对应物理引擎官网查阅资料,如 ODE:Open Dynamics Engine
模型与场景
- 支持建模格式:URDF / SDF
- 自带常用模型库,可直接搭建仿真场景
- 可通过 ROS 2 功能包向外发布仿真数据
传感器仿真
- 内置支持十多种传感器:彩色相机、深度相机、IMU、GPS 等
- 可通过 C++ API 自定义扩展新传感器
- 相机、激光雷达等使用 OGRE 3D 渲染图像
- IMU、声呐等基于物理引擎计算
- 仿真传感器数据通常过于"理想",Gazebo 支持为数据添加各类噪声,以贴近真实硬件效果
运行特性
- Gazebo 是独立应用程序,可脱离 ROS / ROS 2 单独运行
- 本书使用 ROS 2 Humble,对应配套的 Gazebo 版本为 Gazebo 11
1.2安装Gazebo
先确认ros2的版本信息了
|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| robot@LHAYR:~/ros2_ws1 echo ROS_DISTRO jazzy |
| Ubuntu 上的二进制安装 --- Gazebo harmonic documentation 更新安装必要工具 |
| robot@LHAYR:~ sudo apt-get update |
| 下载安装对应Gazebo版本 |
| robot@LHAYR:\~ sudo apt install ros-jazzy-ros-gz |
| 安装完成后,记得刷新环境变量并测试: |
| robot@LHAYR:~ source /opt/ros/jazzy/setup.bash robot@LHAYR:\~ gz sim --verbose Msg Gazebo Sim GUI v8.11.0 Msg Copied installed config /opt/ros/jazzy/opt/gz_sim_vendor/share/gz/gz-sim8/gui/gui.config to default config /home/robot/.gz/sim/8/gui.config. Msg Gazebo Sim Quick start dialog QStandardPaths: wrong permissions on runtime directory /mnt/wslg/runtime-dir, 0777 instead of 0700 ^CEscalating to SIGKILL on Gazebo Sim Server robot@LHAYR:~$ |

1.3 Gazebo示例仿真
输入指令
|--------------------------------------------------------------------------------------------------------------------------------------|
| robot@LHAYR:~$ gz sim shapes.sdf QStandardPaths: wrong permissions on runtime directory /mnt/wslg/runtime-dir, 0777 instead of 0700 |
启动一个示例:

第二章 Gazebo的客户端程序GUI
2.1 GUI的简介及相关指令
GUI是Gazebo的客户端程序,是仿真中最常使用和接触最多的工具。
Gazebo的图形用户界面提供了显示仿真环境,管理配置仿真环境和调试仿真
环境等功能。GazeboGUl一般是通过gzsim命令将服务器与GUI界面同时启
动,也可以使用gzgui命令单独启动GUI界面。
Gazebo Harmonic 实用指令汇总表(最终精准版)
表格
| 场景 | 命令 | 说明 | |
|---|---|---|---|
| 启动示例世界(推荐) | gz sim shapes.sdf | 启动带几何体的标准示例世界 | |
| 启动相机传感器示例 | gz sim camera_sensor.sdf | 带相机的仿真世界 | |
| 启动雷达传感器示例 | gz sim lidar_sensor.sdf | 带激光雷达的仿真世界 | |
| 查看所有内置世界 | ls /usr/share/gz/gz-sim8/worlds/ | 查看系统自带的世界文件 | |
| 仅启动服务端(无界面) | gz sim -s shapes.sdf | 后台运行,提升性能 | |
| 仅启动 GUI 连接服务端 | gz sim -g | 仅开界面,需服务端已启动 | |
| 启动并指定日志级别 | gz sim shapes.sdf -v 3 | 输出更详细调试信息 | |
| 指定渲染引擎 | gz sim shapes.sdf --render-engine ogre2 | 切换渲染器,有助于独显调用 | |
| 手动指定服务端地址 | gz sim -g --server-address tcp://localhost:11345 | 连接远端 / 指定端口服务端 | |
| 查看显卡是否生效 | glxinfo | grep "OpenGL renderer" | 检查是否使用 NVIDIA 独显 | |
| 加载自定义世界文件 | gz sim ~/my_world.sdf | 运行自己的仿真环境 |
备注:禁止 / 不推荐使用表格
| 命令 | 原因 |
|---|---|
| gz gui | 是空壳 GUI,不含仿真控制,几乎不用 |
| gz sim default.sdf | Harmonic 无内置 default.sdf,会报错 |
有效快捷键
- 空格:播放 / 暂停
- F:聚焦选中模型
- 左键拖动:旋转视角
- 右键拖动:平移视角
- 滚轮:缩放视图
2.2 GUI的界面,实例
以下通过Gazebo中自带的一个示例仿真文件介绍GazeboGUl界面常用
功能的用法。
首先启动一个差速小车的仿真环境,执行命令:
gz sim diff drive.sdf
上述命令会启动服务器,并根据默认的GUI设置显示图形用户界面。GU
启动后的效果如图所示,Gazebo的GUl可以分为工具栏,右边栏,场景三部
分。

2.2.1 Gazebo 窗口的工具栏
|----------------------------------------------------------------------------|----------------------------------------------|----------------------------------------------------------------------------|---------------------------------------------|
|
| 保存全部 将存为 加载客户端配置 保存客户端配置 将客户端配置保存 样式设置 关于 退出 |
| 对齐工具 应用力矩 香蕉用于缩放 相机帧率 相机跟踪 相机跟踪配置 ......... |
2.2.2 场景
Gazebo 场景(Scene)区域功能
- GUI 最大区域,用于显示仿真环境,让机器人、地形、物体等更直观逼真。
鼠标交互操作
- 左键按住 + 移动:平移视角
- 中键按住 + 移动:旋转视角
- 右键按住 + 移动:缩放视野(拉近 / 拉远)
- 界面工具栏
- 左上角:场景编辑与视角控制工具
- 左下角:仿真运行控制工具(播放、暂停、步进、重置等)
- 右下角:仿真时间、实时率、步数等进度信息显示
2.2.3 右边栏
|----------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------|
|
| 3)右边栏:位于仿真场景 的右侧,用于显示加载的插件。在图所示的右边栏中有两个插件,功能分别是显示实体信息和管理仿真环境中的实体。在EntityTree插件中列出了场景中的所有实体,在鼠标选中后,会在显示实体信息的插件中显示实体的信息,并可通过鼠标右键打开实体的上下文件菜单 |
2.3 实例控制GUI小车
本案例在开始仿真后利用差速控制插件Teleop控制车辆移动,并通过改变车辆的显示方法观察车在移动时关节的转动。具体步骤如下:在左上角收索 Teleop插件工具,收索添加一个 Tiopc Viewer插件:(1)加载差速控制插件。点击工具栏右侧的插件按钮,在搜索框输入Teleop,在结果中点击相应的插件。Teleop插件则会出现在右侧边栏,如图所示。(2)利用Teleop插件控制小车移动。设置Teleop插件中Topic(话题)为/model/vehicle_blue/cmd_vel。点击Teleop下方的上、下、左和右等几个方向键即可发布控制小车运动的话题,仿真场景中的一个小车就开始了运动。(3)发布控制指令/model/vehicle_blue/cmd_vel
