这章描述Gazebo仿真环境中包含的各个组件。
世界文件
世界描述文件中包含仿真环境中所有的元素,包括机器人、灯光、传感器和静态目标物,使用SDF(仿真描述格式)格式,典型的是有一个.world扩展。
Gazebo服务器(gzserver)通过读取这个文件来产生和填充一个世界。
一些示例世界是Gazebo自带的,位于
<install_path>/share/gazebo-<version>/worlds
模型文件
一个模型文件使用与世界文件相同的SDF格式,但是应该只包含一个单一的<model>... </model>。这些文件的目的是促进模型的重用,并简化世界文件。一旦创建了一个模型文件,就可以使用下面的SDF语法将其包含在一个世界文件中。
<include>
<uri>model://model_file_name</uri>
</include>
在线模型数据库中提供了许多模型(在以前的版本中,一些示例模型是通过Gazebo进行的)。假设您在运行Gazebo时有一个Internet连接,那么您可以从数据库中插入任何模型,并且必须在运行时下载必要的内容。
环境变量
Gazebo使用许多环境变量来定位文件,并在服务器和客户端之间建立通信。大多数情况下的默认值都是编译的。这意味着您不需要设置任何变量。
这是变量:
GAZEBO_MODEL_PATH:以冒号分隔的目录,其中Gazebo将搜索模型
GAZEBO_RESOURCE_PATH:以冒号分隔的目录,在其中,Gazebo将搜索其他资源,如世界和媒体文件
GAZEBO_MASTER_URI:Gazebomaster的URI。这指定了服务器将要启动的IP和端口,并告诉客户机要连接到哪里
GAZEBO_PLUGIN_PATH:由冒号分隔的目录,在运行时,Gazebo将在其中搜索插件共享库
GAZEBO_MODEL_DATABASE_URI:在线模型数据库的URI,Gazebo将从这里下载模型
这些默认值也包含在一个shell脚本中:
source<install_path>/share/gazebo/setup.sh
如果您想要修改Gazebo的行为,例如,通过扩展它搜索模型的路径,您应该首先从上面列出的shell脚本,然后修改它设置的变量。
Gazebo服务器
服务器是Gazebo的工作工具。它解析命令行给出的一个世界描述文件,然后使用物理和传感器引擎模拟世界。
可以使用下面的命令启动服务器。请注意,服务器不包含任何图形;它的意思是“无头”。
gzserver<world_filename>
<world_filename >可以是:
1. 相对于当前目录,
2. 一个绝对路径,或者
3. 相对于GAZEBO_RESOURCE_PATH中的路径组件。
与Gazebo一起发送的世界位于“<install_path>/share/gazebo-<version_number>/worlds”的世界中。
例如,使用empty.world与Gazebo一起发布的世界,使用以下命令
gzserver worlds/empty.world
图形化客户端
图形客户端连接到一个正在运行的gzserver,并可视化这些元素。这也是一个允许您修改正在运行的模拟的工具。
图形客户端使用:
gzclient
服务器和图形化客户端在一个可执行文件
gazebo命令将服务器和客户端放在一个可执行文件中。而不是运行gzserverworlds/empty.world。然后是gzclient,你可以这样做:
gazebo worlds/empty.world
插件
插件提供了一种简单方便的机制来与Gazebo进行交互。插件可以在命令行上加载,也可以在world/model文件中指定(请参阅SDF格式)。在命令行上指定的插件首先加载,然后载入world/model文件中指定的插件。大多数插件都是由服务器加载的;但是,也可以通过图形客户端加载插件来方便定制GUI生成。
在命令行上加载一个插件的例子:
gzserver -s <plugin_filename><world_file>
图形客户端使用了相同的机制:
gzclient -g <plugin_filename>
更多信息请参考插件概述页面。