要了解gazebo需要多种技术知识,常常无法短期内掌握,这里列出相关得种种技术术语,和其基本含义;以便在开发中形成一个总体概念。注意,本文不着眼于技术细节,仅仅是提纲携领而已。
1)服务器
是Gazebo的核心。服务器解析命令行上给出的世界描述文件,然后使用某个物理引擎和传感器引擎仿真该世界。可以使用以下命令启动服务器。请注意,服务器不包含任何图形界面;这意味着服务器是无头运行的。
gzserver <world_filename>
上面命令中的
启动安装得某个世界文件,可以:
gzserver worlds/empty_sky.world
2)客户端:
Gazebo图形客户端,会连接到正在运行的gzserver,并显示可视化仿真元素。图形客户端还是一个允许修改正在运行的仿真的工具。
使用以下命令来运行Gazebo图形客户端:
gzclient
3)gazebo:服务器+图形客户端合一
命令gazebo会将Gazebo服务器和客户端合并到一个可执行文件中。可以不用先运行gzserver worlds/empty.world然后再运行gzclient,而是直接运行以下命令:
gazebo worlds/empty_sky.world
等价得语句是:
- gzserver worlds/empty_sky.world 运行该命令后不会出现任何界面。
- gzclient 打开另一个终端并运行Gazebo图形客户端:
1)世界文件
仿真世界描述文件包含仿真中的所有元素,包括机器人、灯光、传感器和静态对象。世界文件使用SDF(仿真描述格式)进行格式化,并且通常具有.world扩展名。
Gazebo服务器(gzserver)会读取世界文件以生成并填充仿真世界。
安装Gazebo时附带了许多示例仿真世界。这些世界文件安装在
2)模型文件
- <include>
- <uri> model://model_file_name uri>
- include>
Gazebo使用许多环境变量来定位文件和建立服务器与客户端之间的通信。适用于大多数情况的默认值会被编译进Gazebo软件中。这意味着您无需设置任何环境变量。
1) Gazebo包括以下环境变量:
GAZEBO_MODEL_PATH:用冒号分隔的目录集合,Gazebo将会在这些目录中搜索模型;
GAZEBO_RESOURCE_PATH:用冒号分隔的目录集合,Gazebo将会在这些目录中搜索其他资源,例如世界文件和媒体文件;
GAZEBO_MASTER_URI:Gazebo主机的URI,该变量指定了Gazebo服务器启动的IP和端口,并告知客户端要连接到的地址;
GAZEBO_PLUGIN_PATH:用冒号分隔的目录集合,Gazebo在运行时将会在这些目录中搜索插件共享库;
GAZEBO_MODEL_DATABASE_URI:在线模型数据库的URI,Gazebo将会从该链接地址下载模型。
2)这些环境变量的默认值也会包含在shell脚本中:
source /share/gazebo/setup.sh
插件提供了一种与Gazebo进行交互的简单便捷机制。插件可以在命令行中加载,或者在SDF文件中指定(请参见SDF格式)。
Gazebo会先加载命令行上指定的插件,然后再加载SDF文件中指定的插件。有些插件由服务器加载,例如影响物理属性的插件,而其他插件则由图形客户端加载以方便自定义GUI的生成。
通过命令行加载一个系统插件的示例如下:
gzserver -s <plugin_filename>
标志-s表示它是一个系统插件,而
gzserver --verbose -s libRestWebPlugin.so
Gazebo图形客户端使用相同的机制,支持的命令行标志包括:
Gazebo 7和更早版本:使用-g标志加载GUI插件
Gazebo 8和更高版本:使用--gui-client-plugin标志加载GUI插件
例如,要在Gazebo 11中加载TimerGUIPlugin,请运行以下命令:
gzclient --gui-client-plugin libTimerGUIPlugin.so
由于gazebo和ros都为publisher和subscribe系统,因此可以无缝通信:由paremeter-event题目可以传递姿态、位置等信息给server