将 SITL 与 Gazebo 结合使用

gazebo 是一款广为人知、备受推崇的机器人模拟器,曾被用于多项地面、海洋和太空机器人模拟挑战赛,包括 DARPA 机器人挑战赛、DARPA 地下挑战赛和 Virtual RobotX 竞赛。

Gazebo 主要分为两代。要在 Gazebo11 及更早版本中使用 SITL,请参阅 旧版本使用说明.

本文介绍如何使用最新一代 Gazebo 作为 ArduPilot Rover、Coper 和 Plane 的外部模拟器。


提示

Gazebo 尤其适用于定义室内自主飞行、蜂群、非飞行器类型(如UGV无人车和船只)以及多飞行器场景(如上文视频中的飞船着陆模拟)。

安装 ArduPilot SITL

确保已设置 ArduPilot 开发环境,包括作为 GCS 的 MAVProxy。验证是否可以运行 Copter 和 Plane 的 SITL 示例。在 ArduPilot 开发维基 拥有所需的全部信息。

安装gazebo

我们目前支持 gazebo花园和谐gazebo 这些软件适用于 Ubuntu 20.04 (Focal) 和 22.04 (Jammy),以及 macOS Big Sur (11)、Monterey (12) 和 Ventura (13)。

  1. 按照平台说明安装 Gazebo。

  2. 检查gazebo安装是否正常:

    gz 模拟 -v4 -r 外形.sdf
    

这将打开一个包含各种形状的世界(在 macOS 上,您需要在不同的终端运行 Gazebo 服务器和客户端)。

安装 ArduPilot Gazebo 插件

我们使用 ArduPilot 的标准版本,并为 Gazebo 定制了一个插件,该插件托管在 GitHub 上: https://github.com/ArduPilot/ardupilot_gazebo.

备注

虽然 Gazebo 常用于 ROS / ROS2,但 ArduPilot Gazebo 插件并不依赖于 ROS。

备注

该插件的原始版本位于 https://github.com/khancyr/ardupilot_gazeboGazebo 的旧版本.

  1. 安装其他依赖项

    乌班图

    用于gazebo花园

    苏都 适切 更新
    苏都 适切 安装 libgz-sim7-设计 rapidjson-设计
    

    用于gazebo谐波

    苏都 适切 更新
    苏都 适切 安装 libgz-sim8-设计 rapidjson-设计
    

    MacOS

     更新
     安装 rapidjson
    
  2. 创建工作区文件夹并克隆版本库

    mkdir -p gz_ws/来源 &&; CD gz_ws/来源
    git 复制 https://github./ArduPilot/ardupilot_gazebo
    
  3. 构建插件

    根据已安装的 gazebo 版本设置 GZ_VERSION 环境变量(如果需要,用 garden 替换 harmonic):

    出口 GZ_VERSION=调和
    CD ardupilot_gazebo
    mkdir 构建 &&; CD 构建
    cmake .. -dcmake_build_type=RelWithDebInfo
    生产 -j4
    

配置 Gazebo 环境

Gazebo 在运行时会使用一些环境变量来定位插件和模型。这些变量可以在运行 Gazebo 的终端中设置,也可以在您的 .bashrc.zshrc 文件

在终端

export GZ_SIM_SYSTEM_PLUGIN_PATH=$HOME/gz_ws/src/ardupilot_gazebo/build:$GZ_SIM_SYSTEM_PLUGIN_PATH export GZ_SIM_RESOURCE_PATH=$HOME/gz_ws/src/ardupilot_gazebo/models:$HOME/gz_ws/src/ardupilot_gazebo/worlds:$GZ_SIM_RESOURCE_PATH

.bashrc.zshrc

回响 'export GZ_SIM_SYSTEM_PLUGIN_PATH=$HOME/gz_ws/src/ardupilot_gazebo/build:${gz_sim_system_plugin_path} 插件路径' >>; ~/.bashrc
回响 '导出 GZ_SIM_RESOURCE_PATH=$HOME/gz_ws/src/ardupilot_gazebo/models:$HOME/gz_ws/src/ardupilot_gazebo/worlds:${gz_sim_resource_path}(模拟资源路径' >>; ~/.bashrc

将 Gazebo 与 ArduPilot 结合使用

插件提供了两个模型作为示例:Iris 四旋翼飞行器和 Zephyr 三角翼飞行器。

虹膜四旋翼飞行器

  1. 运行gazebo

    gz 模拟 -v4 -r 虹膜跑道.sdf
    
  2. 运行 SITL

    模拟载具.py -v ArduCopter -f gazebo-马兰花 --模型 JSON --地图 --游戏机
    
  3. 手臂和起飞

    稳定>; 模式 导游
    指导>; 上膛 throttle
    指导>; 起飞 5
    

Zephyr 三角翼飞机

Zephyr 定位为垂直起飞。

  1. 运行gazebo

    gz 模拟 -v4 -r zephyr_runway.sdf
    
  2. 运行 SITL

    模拟载具.py -v ArduPlane -f gazebo-zephyr --模型 JSON --地图 --游戏机
    
  3. 手臂、起飞和绕圈

    手册>; 模式 fbwa
    FBWA>; 上膛 throttle
    FBWA>; rc 3 1800
    FBWA>; 模式 圆形
    

改变模拟速度

默认情况下,Gazebo 会尝试以 1 的实时系数(RTF)运行模拟。 要提高模拟速度,请在世界文件的开头添加以下 XML 块 <世界>; 元素:

<;物理 名字="1ms"; 类型="忽略";>;
  <;最大步长>;0.001</最大步长>;
  <;实时因子>-1.0</实时因子>;
</物理>;

然后在 MAVProxy 中设置模拟加速参数

手册>; 停止 设置 SIM_SPEEDUP 10

以前的版本