使用 Vicon 室内定位系统

机器人实验室通常有一个使用 Vicon 室内定位系统的室内飞行设施。这些系统使用红外摄像机,通过网络连接提供高速率(200Hz)的位置和姿态。ArduPilot 可以使用这些定位信息进行精确的室内飞行。

概述

Vicon 系统自带 SDK,提供用于访问 Vicon 定位数据的 API。要将 Vicon 数据与 ArduPilot 结合使用,您需要一个工具来使用该 API,并将其映射到 MAVLink 数据包中发送给 ArduPilot。

可使用两种类型的 MAVLink 数据包:

  • GLOBAL_VISION_POSITION_ESTIMATE 数据包,提供位置(NED)和姿态(欧拉角)。

  • GPS_INPUT 数据包提供位置(纬度/经度)、高度、速度(3D)和偏航数据。

目前最好的方法是使用带有 GPS 偏航扩展的 GPS_INPUT,因为与 GLOBAL_VISION_POSITION_ESTIMATE 数据包中的姿态信息相比,GPS 数据包提供的速度数据对良好定位更有价值。今后,我们将支持在一个数据包中提供位置、速度和姿态的组合 VISION MAVLink 报文。

硬件设置

从 GCS 计算机到旋翼飞行器,以及从 GCS 到 Vicon 服务器,您需要一个低延迟的网络链接。建议的方法是使用以太网连接 Vicon 服务器,并使用运行 ESP8266 WiFi 的链接。 mavest8266 旋翼飞行器上。

Vicon 系统设置

  • 应正确校准 Vicon 系统。应使用校准棒设置原点。在 Vicon Tracker 软件中,Vicon 系统世界帧的 Z 轴(蓝色显示)应指向上方。我们将 X 轴(红色)称为 "北",Y 轴(绿色)称为 "西"。

  • 无人驾驶飞行器应至少有 4 个反光标记,以确保准确定位。无人驾驶飞行器上的任何反光表面都应用遮蔽胶带覆盖,以避免出现虚假探测。

  • 将无人机放入 Vicon 空间,使(飞行)控制器的前进方向朝向 "北"。(图 1)

  • 在 Vicon Tracker 中,选择所有标记并为 UAV 创建一个新对象。然后将无人机的坐标框架与 Vicon 的世界框架对齐,这样 X 代表向前,Y 代表向左,Z 代表向上。(图 2)

./_images/vicon-frame-reference.jpg

图 1:创建 Vicon 对象时无人机定位示例。前进方向与 X 轴对齐。

./_images/vicon-alignment.png

图 2:Vicon Tracker 软件截图,显示与无人机坐标系对齐的世界坐标系(左下)。目标框架的原点应大致位于(飞行)控制器的位置。

警告

这些坐标框架约定适用于 MAVProxy 1.8.36 及以上版本。请确保您使用的是最新版本。

软件设置

您需要在旋翼飞行器上安装最新版本的 ArduPilot。自 2019 年 9 月起,建议您使用 ArduPilot master。需要最新版本才能在 GPS_INPUT MAVLink 信息中支持偏航数据。

下面描述的设置使用 MAVProxy 中的 Vicon 模块,通过 MAVLink 将 Vicon 数据传送到您的载具。

pyvicon

您需要安装 pyvicon python 软件包,使用的 python 版本至少为 3.6。要安装 pyvicon,您还需要安装版本为 1.10 或更高的 Vicon SDK,可从以下地址下载 ViconDataStream SDK

请注意,pyvicon 不支持 python2。

安装好 SDK 后,应像这样安装 pyvicon:

python3 setup.py 构建 安装 --用户

您还需要在 $PATH 中添加 $HOME/.local/bin。

MAVProxy 设置

您需要至少 1.8.36 版本的 MAVProxy。使用以下工具安装

python3 -m 核心 安装 --升级 --用户 mavproxy

您还需要其他一些 python3 库,请使用以下命令安装:

苏都 apt-get 安装 libgtk-3-dev python3 -m 核心 安装 --用户 pathlib2 wxpython matplotlib

接下来,你应该把 vicon 服务器的 IP 地址放到 /etc/hosts 文件中,这样就可以 "ping vicon "了。在 MAVProxy vicon 模块中,"vicon "被用作默认主机名。

连接

设置旋翼飞行器的 WiFi 链接,波特率为 921600,并启用 MAVLink2。如果您的 WiFi 适配器是 Telem1,则需要设置:

  • serial1_protocol=2

  • serial1_baud=921600

接下来像这样启动 MAVProxy:

mavproxy.py --主人 :14550 --飞机 MyQuad --控制台 --地图

更多详情,请参阅 MAVProxy 文档

关键参数

您应设置以下关键参数:

  • EK3_ENABLE=1

  • EK2_ENABLE=0

  • ahrs_ekf_type=3

  • EK3_GPS_TYPE=0

  • EK3_MAG_CAL=5

  • ek3_alt_source=2

  • GPS_TYPE=14

  • gps_delay_ms=50

  • COMPASS_USE=0

  • COMPASS_USE2=0

  • COMPASS_USE3=0

设置完这些参数后,应重新启动旋翼飞行器。

启动 Vicon

在 MAVProxy 中加载 vicon 模块:

模块 负荷 图标

如果加载不正确,请使用 "set moddebug 3 "启用调试,然后再尝试加载模块。

加载完成后,使用 "vicon set "设置 vicon 参数。对参数满意后,再执行 "vicon start"。

然后,MAVProxy 控制台将提供 Vicon 的状态信息,显示位置、姿态和信息速率。飞行器还应获得 GPS 锁定。它将显示在 Vicon 模块设置中的 GPS 坐标上。

检查方向

使用 MAVProxy 控制台中的 Vicon 状态行检查来自 Vicon 数据的正确方向。VPos 数据为 NED 格式,单位为米。VATT 数据是滚动、俯仰和偏航的欧拉角。请在旋转和移动飞行器时仔细检查这些值是否一致,然后再继续操作。

试飞

您应该看到 ArduPilot 首先报告 EKF3 获得偏航对齐,然后报告它正在使用 GPS。之后,您就可以进行上膛和飞行了。

首次试飞建议使用稳定或 ALT_HOLD 模式。然后从 microSD 卡中获取飞行日志,检查 EKF3 创新值是否较低。位置、速度和偏航归一化创新值都应较低(低于 0.1)。

确认低创新后,您可以尝试在 LOITER 模式下飞行。

飞行稳定调整

如果有明显的振动,则可能需要取消加速度计的权重,让 EKF 更多地使用 Vicon 数据。请尝试将 EK3_ACC_P_NSE 设置为 2.0,以降低加速度计数据的权重。您可能会发现这有助于位置和高度保持。

使用 Vicon 设置和小型四轮飞行器进行室内飞行时,您可以将加速度和偏航率提高到比普通四轮飞行器高得多的值。对小型竞赛四轮飞行器的一些建议如下

  • ins_gyro_filter=60

  • ins_accel_filter=30

  • ATC_ACCEL_Y_MAX=100000

  • atc_slew_yaw=15000

圆圈模式

测试飞行精度的一个非常有用的模式是 圆形模式<circle-mode>;.要在室内使用,请尝试

  • circle_radius=100

  • CIRCLE_RATE=40

您还应将 RTL_ALT 设置得很低,以防遇到故障保护,或在发射机上配置一个即时解除开关,以防出现问题。

要以圆圈模式飞行,请在 LOITER 模式下起飞,然后移动到距离房间中心 1 米的位置,指向房间中央。然后切换到 "圆圈 "模式,飞行器应开始盘旋,并保持车头指向圆圈中心。随着信心的增强,您可以尝试将 CIRCLE_RATE 提升到更高的值(单位:度/秒)。本页顶部的视频中,CIRCLE_RATE=150 表示每秒绕圈 150 度。