源网页: http://gazebosim.org/tutorials?tut=components&cat=get_started
这里列举了运行Gazebo仿真所涉及的项目
1. world文件
这个文档中包含了运行Gazebo仿真所需的所以元素,包括:机器人、灯光、传感器和静态对象。这个文件的格式是SDF(Simulation Description Format),通常的后缀就是.world
。
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>
路径可以是:
- 相对于当前目录的路径;
- 绝对路径;
- 相对于
GAZEBO_RESOURCE_PATH
中的路径组件; 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
有关更多信息,请参阅插件概述页面
。