在传统版本的 Gazebo 中使用 SITL

本文介绍如何使用旧版本的 Gazebo https://classic.gazebosim.org/ 作为 ArduPilot Rover、Copter 和 Plane 的外部模拟器。

概述

Gazebo 是一款广为人知、备受推崇的机器人模拟器,也是 DARPA 的官方虚拟机器人模拟器。不过,当前版本尚未内置对 ArduPilot 的支持。(截至 2017 年 4 月,之前关于内置支持的 PR 尚未合并)。

警告

如果您发现其中某些说明已经过时,请在 github 上的 ardupilot_wiki 软件仓库中打开一个问题。

提示

Gazebo 对于定义自主室内飞行或蜂群特别有用。

先决条件

我们推荐从 16.04 或 18.04 开始的 Ubuntu,因为这两个平台是测试此方法的平台。众所周知,它们也与 SITL 兼容。

在 Gazebo 插件并入 Gazebo-master 之前,我们将使用标准版 ArduPilot,但会为 Gazebo 定制一个插件。

该插件既可以与 ROS 集成,也可以不与 ROS 集成。在这两种情况下,我们都建议使用 OSRF 存储库中的 Gazebo。

苏都  -c 'echo "deb http://packages.osrfoundation.org/gazebo/ubuntu-stable `lsb_release -cs` main" > /etc/apt/sources.list.d/gazebo-stable.list';
wget http://套餐.osrfoundation.组织/gazebo.密钥 -O - | 苏都 适切-密钥 增加 -
苏都 适切 更新

我们将使用的插件适用于 gazebo 7 至 9 版本。我们推荐使用 gazebo9,因为新开发的功能将附加到这个版本上。不过它不适用于旧版本的 Ubuntu,因此您可能需要根据自己的系统使用更早的版本。

苏都 适切 安装 gazebo9 libgazebo9-设计

首次使用gazebo需要下载一些模型,可能需要一些时间,请耐心等待。让我们试一试吧。

gazebo --冗长

它应该打开一个空洞的世界。

安装插件

以下插件是一个纯 Gazebo 插件,因此无需 ROS 即可使用。您仍然可以通过普通的 gazebo-ros 软件包在 Gazebo 中使用 ROS。我们有两个版本的插件:khancyr 和 SwiftGust。来自 khancyr 是原版。它很稳定,只有必要的文件才能运行。来自 斯威夫特阵风 有更多的示例和更多的文档。两者使用的插件相同,只是提供的文档和示例不同。

在下面的说明中,我们将使用 khancyr 插件。首先将它克隆到你的主目录中。(如果您在使用 git 时需要帮助,请参阅 安装了 git, 分叉克隆.)

git 复制 https://github./khancyr/ardupilot_gazebo
CD ardupilot_gazebo
mkdir 构建
CD 构建
cmake ..
生产 -j4
苏都 生产 安装

这些说明将把软件源克隆到 ardupilot_gazebo 目录中,并在其中创建一个新的构建目录。然后,插件将被编译并安装到 Gazebo 插件目录中。

启动模拟器

在终端窗口中启动 Gazebo:

gazebo --冗长 世界/虹膜旋翼飞行器跑道.世界

在另一个终端窗口中,输入 ArduCopter 目录并启动 SITL 仿真:

CD ~/ardupilot/ArduCopter
../工具/自动测试/模拟载具.py -f gazebo-马兰花 --游戏机 --地图

如果一切顺利,你应该会看到这个:

备注

ROS 通常与 Gazebo 一起使用,但这不在本文讨论范围之内。如果使用 ROS,可以考虑使用以下软件包:- 马夫罗斯 (发送和接收 MAVLink 数据包) - 摄像头 (用于将 Gazebo 的虚拟摄像机数据流发布到 ROS 主题)。