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小车

相关推荐
格林威14 小时前
C#图像快速剪切:使用OpenCvSharp和Halcon优化图像剪切和CPU占用
开发语言·人工智能·数码相机·计算机视觉·c#·视觉检测·工业相机
亨得利先生1 天前
户外双目3D相机哪家好?SICK Visionary 系列户外选型指南与 Visionary-B Two 分析
数码相机·相机·户外相机·户外3d相机·sick
格林威2 天前
C#高位深相机图像保存:12位16位图像保存方案,OpenCvSharp和Halcon实现
开发语言·人工智能·数码相机·计算机视觉·c#·视觉检测·工业相机
CoderIsArt3 天前
基于Halcon的T恤印花缺陷检测程序
人工智能·数码相机·计算机视觉
高升说3 天前
双目立体视觉:视差测距为何离不开散斑
数码相机
安之眼Angleyes3 天前
运动相机的“盲拍”困局与AX10的解法:AR实时预览+AI双引擎,让所见即所得
人工智能·数码相机·ar
高升说4 天前
光与影的邂逅-09-太亮的地方
数码相机·深度相机
高升说4 天前
光与影的邂逅-08-丢失的光
数码相机·深度相机
CVer儿5 天前
ras转为lps坐标系
数码相机
恒锐丰小瑞5 天前
率能SS6810R 40V/1A/双通道H桥驱动芯片,PWM电流控制与混合衰减模式(eTSSOP20),用于POS打印机/安防相机/机器人
单片机·嵌入式硬件·数码相机·机器人