2、Gazebo基础操作:从零开始搭建你的仿真世界

各位同学,欢迎来到Gazebo实操环节。说实话,很多初学者一打开Gazebo就被密密麻麻的界面吓到了。别慌,我当年第一次看到这个界面时,也愣了好一会儿。今天我们就把它拆开揉碎,一点点讲清楚。

2.1 Gazebo界面:你该关注哪几个区域?

Gazebo的界面其实就三大块。你记住这三块,基本就掌握了80%。

  • 3D场景窗口(主视图):这就是你的仿真世界。所有模型、机器人、传感器都在这里显示。你可以用鼠标拖拽旋转视角,滚轮缩放。
  • 左侧面板(World / Insert):左边这个侧边栏,World标签显示当前世界中的所有模型列表,Insert标签用来添加新模型。我个人习惯把常用模型拖到Insert里,用起来快很多。
  • 顶部工具栏:播放/暂停仿真、重置世界、选择/移动/旋转/缩放物体。这几个按钮你天天都会用到。
小技巧: 按住 Ctrl + Shift 再拖拽鼠标,可以平移视角。这个快捷键我用了三年才发现,别走我的弯路。

2.2 创建简单世界:从空白文件开始

我们不需要每次都从零敲代码。Gazebo支持图形化创建世界,但说实话,我更推荐你直接写一个简单的.world文件。为什么呢?因为可重复性高,改参数也方便。

来,我们创建一个最简单的世界——只有地面和光照。

<?xml version="1.0"?>
<sdf version="1.6">
  <world name="my_first_world">
    <include>
      <uri>model://sun</uri>
    </include>
    <include>
      <uri>model://ground_plane</uri>
    </include>
  </world>
</sdf>

把这个文件保存为my_world.world。然后在终端运行:

gazebo my_world.world

看到了吗?一个带光照和地面的空世界就出来了。嗯,这里要注意:model://是Gazebo内置模型的路径,你不需要下载任何东西。

2.3 添加静态物体:让世界丰富起来

空荡荡的世界没意思。我们来加几个物体。在Gazebo里,物体分两种:静态物体和动态物体。静态物体不会动,比如墙壁、柱子、桌子。动态物体会受重力影响,比如掉落的箱子。

添加静态物体的方法很简单:

  1. 点击顶部工具栏的 Insert 标签
  2. 在左侧面板找到你想添加的模型(比如 cinder block 或 bookshelf)
  3. 拖拽到场景中
  4. 右键点击物体 → Edit Model → 勾选 Static

为什么要勾选Static?我在项目中遇到过一个问题:有一次仿真时,一个书架模型没设静态,结果机器人轻轻一碰,书架就倒了,还把传感器砸坏了。所以,凡是固定不动的物体,一定要设为静态。

注意: 静态物体不会参与物理碰撞计算,但会阻挡机器人运动。如果你发现机器人穿模了,检查一下物体是不是设成了静态。

2.4 保存与加载世界文件:别让你的工作白费

你辛辛苦苦摆好了场景,结果忘了保存?我曾经干过这种事,摆了一下午的货架和障碍物,一个断电全没了。从那以后,我养成了随时保存的习惯。

保存世界的方法:

  • 菜单栏 → File → Save World As
  • 或者直接按 Ctrl + S
  • 保存为 .world 文件

加载世界的方法:

  • 启动时:gazebo your_world.world
  • 运行时:菜单栏 → File → Open World

保存后的.world文件长什么样?我们打开看看:

<?xml version="1.0"?>
<sdf version="1.6">
  <world name="my_world">
    <include>
      <uri>model://sun</uri>
    </include>
    <include>
      <uri>model://ground_plane</uri>
    </include>
    <model name="cinder_block">
      <static>true</static>
      <pose>1.0 0.5 0.0 0 0 0</pose>
      <link name="link">
        <collision name="collision">
          <geometry>
            <box>
              <size>0.5 0.5 0.5</size>
            </box>
          </geometry>
        </collision>
        <visual name="visual">
          <geometry>
            <box>
              <size>0.5 0.5 0.5</size>
            </box>
          </geometry>
        </visual>
      </link>
    </model>
  </world>
</sdf>

你看,<static>true</static> 就是刚才我们勾选的静态属性。<pose> 是物体的位置和朝向。你完全可以手动修改这些数值,比在图形界面里拖拽精确得多。

2.5 本章知识体系:一张图看懂

下面这张图总结了Gazebo基础操作的核心逻辑。你照着这个流程走,不会出错。

Gazebo基础操作知识体系 界面认识 3D场景 / 左侧面板 / 工具栏 创建世界 .world文件 / 地面 / 光照 添加物体 静态 / 动态 / 拖拽 / 编辑 保存与加载世界文件 (.world) Ctrl+S 保存 命令行加载 静态物体设置 右键 → Edit Model 手动编辑XML 修改pose / static 核心:界面操作 → 创建世界 → 添加物体 → 保存加载

核心要点回顾:

  • Gazebo界面三大区域:3D场景、左侧面板、顶部工具栏
  • 创建世界:写一个.world文件,包含光照和地面
  • 添加静态物体:拖拽模型 → 右键设为Static
  • 保存世界:Ctrl+S 或菜单保存,加载用命令行或菜单
  • 手动编辑.world文件可以精确控制物体位置和属性

好了,这一章的内容就到这里。你可以在Gazebo里试着摆几个物体,保存一下,再加载回来看看效果。实际操作一遍,比看十遍教程都管用。

可可精品资料库