ROS2-16章:机器人仿真软件Gazebo

目录

++[目录... 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)区域功能

  1. GUI 最大区域,用于显示仿真环境,让机器人、地形、物体等更直观逼真。

鼠标交互操作

  • 左键按住 + 移动:平移视角
  • 中键按住 + 移动:旋转视角
  • 右键按住 + 移动:缩放视野(拉近 / 拉远)
  1. 界面工具栏
  • 左上角:场景编辑与视角控制工具
  • 左下角:仿真运行控制工具(播放、暂停、步进、重置等)
  • 右下角:仿真时间、实时率、步数等进度信息显示

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

2.4实例控制GUI小车

相关推荐
gaosushexiangji6 小时前
基于多视角高速成像与体素建模的特斯拉线圈放电电弧三维重建实验研究
数码相机
szxinmai主板定制专家1 天前
基于ZYNQ UltraScale+ MPSOC的超高清红外-可见光融合成像相机设计
数码相机·相机
飞凌嵌入式1 天前
工业无死角视觉方案:RV1126B平台AVS全景拼接+目标检测
人工智能·数码相机·目标检测
Helen_cai2 天前
OpenHarmony 图片选择 & 相册相机工具封装 ImagePickerUtil(API23)
数码相机·华为·harmonyos
最爱老式锅包肉2 天前
HarmonyOS技术精讲-Camera Kit(相机服务)第7篇:闪光灯控制技术
数码相机·华为·harmonyos
最爱老式锅包肉2 天前
HarmonyOS技术精讲-Camera Kit(相机服务)第9篇:自动对焦与手动调焦
数码相机·华为·harmonyos
最爱老式锅包肉2 天前
HarmonyOS技术精讲-Camera Kit(相机服务)第8篇:曝光控制深入解析
数码相机·华为·harmonyos
气概2 天前
QT集成basler相机
开发语言·数码相机·qt
线束线缆组件品替网3 天前
Amphenol ICC RJE1Y22610C42401线束组件应用解析
网络·数码相机·智能手机·计算机外设·电脑·电视盒子