Gazebo学习笔记2:Gazebo的组成部分


源网页: http://gazebosim.org/tutorials?tut=components&cat=get_started

这里列举了运行Gazebo仿真所涉及的项目

1. world文件

这个文档中包含了运行Gazebo仿真所需的所以元素,包括:机器人、灯光、传感器和静态对象。这个文件的格式是SDF(Simulation Description Format),通常的后缀就是.world

image-20200309214606147

world文件的案例:

<?xml version="1.0" ?>
<sdf version="1.5">
  <world name="default">
    <physics type="ode">
      ...
    </physics>
    
    <scene>
      ...
    </scene>

    <model name="box">
      ...
    </model>

    <model name="sphere">
      ...
    </model>

    <light name="spotlight">
      ...
    </light>

  </world>
</sdf>

Gazebo的server(gzserver)会读取这个文件,依据这个来生成仿真环境。

Gazebo自带了许多world模型,这些文件会被放在路径<install_path>/share/gazebo-<version>/worlds,你也可以在这个网站找到它们:https://bitbucket.org/osrf/gazebo/src/default/worlds/

2. 模型文件

模型文件和world文件同样使用SDF格式,但是只应该包含一个model模块<model>... </model>。使用模型文件的目的是模型重用,同时也简化world文件。创建的模型文件可以使用以下SDF语法包含在world文件中:

<include>
  <uri>model://model_file_name</uri>
</include>

模型文件的例子:

<?xml version="1.0" ?>
<sdf version="1.5">
  <model name="box">
    <pose>0 0 0.5 0 0 0</pose>
    <static>false</static>

    <link name="link">
      ...
    </link>

    <joint type="revolute" name="my_joint">
      ...
    </joint>

    <plugin filename="libMyPlugin.so" name="my_plugin"/>

  </model>
</sdf>

模型数据库中提供了许多模型,可以从数据库中插入模型。在联网情况下,从数据库中插入的模型可以在运行时自动下载下来。

3. 环境变量

Gazebo 使用许多环境变量来定位文件,并在服务器和客户机之间建立通信。 在大多数情况下可以工作的默认值编译为。 这意味着您不需要设置任何变量。

以下是一些这些变量:

  • GAZEBO_MODEL_PATH: 冒号分隔的目录集,Gazebo 将在其中搜索模型。
  • GAZEBO_RESOURCE_PATH: 冒号分隔的目录集,Gazebo 将在其中搜索其他资源,如 world 和媒体文件。
  • GAZEBO_MASTER_URI: Gazebo主站的URI。 这指定将启动服务器的IP和端口,并告诉客户端连接到哪里。
  • GAZEBO_PLUGIN_PATH:冒号分隔的目录集,Gazebo将在运行时在其中搜索插件共享库。
  • GAZEBO_MODEL_DATABASE_URI: 在线模型数据库的 URI,Gazebo 将从那里下载模型。

这些默认值包含在 shell 脚本中:

source <install_path>/share/gazebo/setup.sh

如果你想修改 Gazebo 的行为,例如,扩展它搜索模型的路径,你应该首先源代码上面列出的 shell 脚本,然后修改它设置的变量。

在Gazebo 8 中新增的部分

Gazebo的某些部分已转换为使用Ignition Transport库进行进程间通信,而不是使用内置的Gazebo Transport库。 某些功能(如标记和打印实用程序)在使用Ignition Transport,可能会受到以下环境变量的影响:

  • IGN_PARTITION:所有Ignition Transport节点的分区名称。
  • IGN_IP: 类似于 GAZEBO_MASTER_URI`,但用于Ignition Transport。
  • IGN_VERBOSE: 显示来自Ignition Transport的调试信息。

此处阅读有关点火运输环境变量的更多信息。

4. Gazebo Server

Gazebo Server 是 Gazebo 的核心。 它解析命令行上给出的世界描述文件,然后使用物理和传感器引擎模拟世界
可以使用以下命令启动Gazebo Server 。请注意,Gazebo Server 不包括任何图形界面。

gzserver <world_filename>

<world_filename>路径可以是:

  1. 相对于当前目录的路径;
  2. 绝对路径;
  3. 相对于GAZEBO_RESOURCE_PATH中的路径组件;
  4. worlds/<world_name>, <world_name> 是安装在Gazebo中的world。

例如,要使用 Gazebo 附带的empty_sky.world,请使用以下命令:

gzserver worlds/empty_sky.world

5. 图形客户端

图形客户端连接到正在运行的gzserver并可视化模型元素。 这也是一个允许您修改运行仿真的工具。
图形客户端使用以下命令运行:

gzclient

6. 服务器+图形客户端一体化

gazebo命令将服务器和客户端组合在一个可执行文件中,而不是先运行gzserver world/empty.world,然后运行gzclient,例如你可以这样做:

gazebo worlds/empty_sky.world

7. 插件

插件提供了一种与Gazebo交互的简单方便的机制。 插件可以在命令行上加载,也可以在SDF文件中指定(请参见SDF格式)。
命令行中指定的插件会首先加载,然后加载SDF文件中指定的插件。 一些插件由服务器加载,例如影响物理属性的插件,而其他插件由图形客户端加载以便于自定义GUI生成。

通过命令行加载系统插件的示例:

gzserver -s <plugin_filename>

-s标志表示它是一个系统插件,<plugin_filename>是在GAZEBO_PLUGIN_PATH中找到的共享库的名称。例如,要加载Gazebo附带的RestWebPlugin`:

gzserver --verbose -s libRestWebPlugin.so

图形客户端使用相同的机制,支持的命令行标志如下:

  • Gazebo 7 和更早的版本: 使用 -g 加载 GUI 插件
  • Gazebo 8 和更高版本: 使用 --gui-client-plugin 加载 GUI 插件

例如,要加载 TimerGUIPlugin:

gzclient --gui-client-plugin libTimerGUIPlugin.so

有关更多信息,请参阅插件概述页面

发布了45 篇原创文章 · 获赞 1 · 访问量 2422

猜你喜欢

转载自blog.csdn.net/amnesiagreen/article/details/105674306
今日推荐