Skip to main content

1.5Gazebo

Gazebo

Gazebo是一款开源的3D仿真软件,用于模拟机器人在复杂环境中的行为。它提供了丰富的物理引擎和传感器模型,可以模拟机器人的运动、碰撞、传感器数据等。

# 安装gz
sudo apt-get install ros-jazzy-ros-gz

# 测试(参数 empty.sdf 表示空场景)
# 测试能否正常启动且无卡顿,gz_args:=empty.sdf表示使用空场景
ros2 launch ros_gz_sim gz_sim.launch.py gz_args:=empty.sdf

# 我的Gazebo版本
"""
Gazebo Sim, version 8.9.0
Copyright (C) 2018 Open Source Robotics Foundation.
Released under the Apache 2.0 License.
"""

gazebosim有大量下载好的模型(models)与场景(worlds)可以使用。

想简单点就选一个自带摄像头的机器人模型(model),如果有中意的机器人模型没摄像头的,可以自己加一个摄像头。

选赛道类的,有明显的车道线,可以较好的测试算法。如果场景过于简单可以适当的添加一些模型,例如:路灯、树木、箱子等。

从结构上来说,场景(world)包含 N 个模型(model),模型包含 M 个传感器(sensor)。

虚拟仿真的世界观和Blender的世界观类似,一个世界需要有物理引擎、光源、模型等等。首先我们需要简单了解下这样的世界观。

sdf格式中世界可接收的子元素:http://sdformat.org/spec?ver=1.4&elem=world

sdf格式中模型可接收的子元素:http://sdformat.org/spec?ver=1.4&elem=model

gazebo的传感器库:https://gazebosim.org/libs/sensors/

sdf格式中传感器可接收的子元素http://sdformat.org/spec?ver=1.4&elem=sensor

这种结构化的文档可读性要比传统的纯文档观感好很多。

URDF

URDF(Unified Robot Description Format)是一种用于描述机器人模型的XML格式。

一个两轮机器人运动示例官方教程

通过这个部分的学习,你可以学会如何操纵你的小车运动。

其中pose标签有6个参数,官方文档认为比较简单没讲,这里提一下:

  • 前三个参数表示三维空间坐标(取值范围为空间内即可)
  • 后三个参数表示绕某个轴的角度(控制物体面朝什么方向)
方向正值含义颜色标识
X 轴前后方向向前(North)🔴 红色
Y 轴左右方向向左(West)🟢 绿色
Z 轴上下方向向上🔵 蓝色
角度旋转方向常用值
Roll绕 X 轴旋转翻滚通常为 0
Pitch绕 Y 轴旋转俯仰通常为 0
Yaw绕 Z 轴旋转左右转头0, 1.57, 3.14, -1.57

Yaw 角度对照表

Yaw (弧度)角度朝向示意
0朝向 +X(前)
1.5790°朝向 +Y(左)
3.14180°朝向 -X(后)
-1.57-90°朝向 -Y(右)

传感器

基于不同的目的,我们会选择不同的传感器结合不同的算法来实现。

传感器应用场景优势劣势
激光雷达SLAM建图、避障精度高,不受光照影响价格贵,无颜色信息
摄像头目标识别、视觉SLAM成本低,信息丰富受光照影响,计算量大
深度相机室内SLAM、3D重建提供RGB+深度,实时性好仅室内可用,范围有限(5m)
IMU姿态估计、传感器融合高频输出,不依赖环境存在漂移,需融合其他传感器

机器人专业可以参考官方文档教程,其中使用的是IMU 传感器、接触式传感器和激光雷达传感器。