使用 Vagrant 设置 SITL

警告

这些说明已经过时。我们建议 Windows 10 或更高版本的用户按照以下说明进行操作 使用 WSL 设置构建环境在 WSL 上设置 SITL

本文将介绍如何设置 SITL ArduPilot 模拟器 在虚拟机环境中使用 无人车UGV并将其连接到主机上运行的地面控制站。这种方法比 人工 设置虚拟机,在 Mac OSX 或 Windows(或 Linux)上运行 SITL。

这些说明已在 Windows 8.1 上进行了测试。

概述

SITL(Software In The Loop,循环软件)模拟器允许您在没有任何硬件的情况下运行飞机、旋翼飞行器或漫游车。模拟器在 Linux PC 上以本地可执行文件的形式运行正常的 ArduPilot 代码。SITL 也可在 Windows、Mac OSX 或 Linux 上的虚拟机中运行。

Vagrant 是一款用于自动设置和配置在虚拟机中运行的开发环境的工具。虽然可以 手动设置 SITL 在 Windows 上的虚拟机中运行 (或 Mac OSX),它是 容易得多 (而且可重复性更高)。

备注

由于子模块目前在构建系统中的处理方式,不可能在主机和虚拟机上同时构建一个版本库。运行 Vagrant 虚拟机时应使用专用的版本库。

先决条件

  • Git (1.8.x 或更高版本) 必须安装在主机上。

    • Git for Windows (1.9.5) 的建议。

      备注

      当前的 Windows px4 工具链(v14)不含

      足够新的 GIT 版本

警告

  • 第一步必须使用较新版本的 git 子模块(git 1.8.x 或更高版本)。之后可以使用旧版本。

  • 确保 git 设置为不触及行尾。点击新的 "Git Shell(或 Bash)"图标(该终端已在安装 git 时安装),然后在 Git "MINGW32″ 终端窗口中输入以下内容:

    git 配置 --全球 核心.专权 错误
    
  • SSH 必须安装在主机上,并添加到系统 PATH 中。SSH 与 GIT 一起安装,也可以根据自己的平台单独安装。

设置 Vagrant 和虚拟机

  1. 下载并安装 VirtualBox.

  2. 下载并安装 Vagrant 您的平台。支持 Windows、OS-X 和 Linux。

  3. 克隆 ArduPilot 您可以在电脑上的任何地方访问 Github 仓库:

    git 复制 https://github./ArduPilot/ardupilot.git
    CD ardupilot
    
  4. 启动 vagrant 实例

    • 在 ardupilot 文件夹中运行命令:

      流浪汉 向上
      

    开始运行一个虚拟机,该虚拟机基于 Vagrant 配置文件 在源代码树中。该目录树中的所有文件都会 "神奇地 "出现在运行中的实例中,位于 /vagrant.

    备注

    第一次运行 vagrant up 命令需要一些时间。该命令需要获取一个 Vagrant 基本虚拟机,并将其配置为开发环境。

    备注

    在旧版本的 Ubuntu 中,Vagrant 附带的 CA 证书存储空间可能已经过时。你可能需要在运行 Vagrant 前设置一个环境变量:

    出口 CURL_CA_BUNDLE=/等等/ssl/证书/ca-证书.ct
    
  5. 初始化 git 子模块

    • ArduPilot 源代码树引用了其他软件源,如 子模块.这些必须通过在虚拟机上运行来初始化:

      流浪汉 ssh
      CD /流浪汉
      git 子模组 更新 --启动 --递归
      出口
      

开始运行 SITL

在你的 vagrant shell 中输入以下内容,运行 Copter 模拟器。这将首先构建代码(如果之前未构建),然后运行模拟器:

流浪汉 ssh -c "sim_vehicle.py -j 2 -v ArduCopter";

模拟运行后,您将开始从 MAVLink 提示中获得有关载具状态的信息。例如

全球定位系统 水闸  0 米数
APM: 前臂: RC  校准
APM: 旋翼飞行器 V3.3-设计 (999710d0)
APM: 框架: QUAD
APM: 前臂: RC  校准

本例中构建了旋翼飞行器模拟器,但您也可以通过更改 -v 选择:

流浪汉 ssh -c "sim_vehicle.py -j 2 -v ArduPlane";
流浪汉 ssh -c "sim_vehicle.py -j 2 -v Rover";

提示

sim_vehicle.py 有许多有用的构建选项,从设置模拟速度到选择初始载具位置。使用 -h 标志(其中一些在 使用 SITL 进行 ArduPilot 测试).

在主操作系统中运行Mission Planner地面站或 MAVProxy

现在可以从主操作系统连接到运行中的模拟器。只需连接到 UDP 14550 端口,从 Mission Planner地面站MAVProxy.......。 MAVProxy 命令是

mavproxy.py --=127.0.0.0.1:14550

关闭模拟器

完成模拟后

  • 新闻 ctrl-d 在 Vagrant SSH 窗口中退出特殊的 MAVProxy 将一切粘合在一起。

  • 在命令提示符中输入以下内容,暂停正在运行的虚拟机:

    流浪汉 吊销
    

重启模拟器

再次需要模拟器时,可以恢复虚拟机并重新启动模拟器,如图所示:

流浪汉 向上
流浪汉 ssh -c "sim_vehicle.py -j 2";

备注

重新启动环境通常只需要几秒钟,因为虚拟机只是暂停,载具的模拟代码已经构建完成。

更新模拟器

模拟器由主机和虚拟机共享的源代码树构建,任何更改都会在下次启动模拟器时触发重建。要更新模拟器,只需修改源代码树(或从 Github 获取新版本)。

下一步工作

要充分利用 SITL,我们建议您阅读 MAVProxy 文档.

主题 使用 SITL 进行 ArduPilot 测试 介绍了如何使用模拟器,并涵盖了如何将 SITL 与Mission Planner地面站和 MAVProxy 以外的地面站一起使用等主题。