用于非 GPS 导航的 Pozyx¶
本文介绍了如何 Pozyx 系统的基础上 DWM1000 可用作 GPS 的短程替代品,允许使用 Loiter、PosHold、RTL、Auto indoors 等定位控制模式。
所需硬件¶
放置地锚¶
锚点应放置成矩形。ID 值最小的锚点(每个设备上的 ID 值都是十六进制)将作为 "原点",并应放置在矩形的左下角。其余三个锚点应分别放置在一个角上,这样锚点 ID 就会随着矩形内 "N "字形的移动而增加。如果从原点锚点到第 2 个锚点之间的直线是正北方向,配置会稍微简单一些,但这并不是必需的。 BCN_ORIENT_YAW 参数可以用来解释这种差异。
准备标签¶
将(飞行)控制器的一个遥测接口连接到 UNO。上面显示的是 Telem1,但任何串行端口都能正常工作。
(飞行)控制器 UART 端口的接地应与 UNO 的一个接地引脚相连。
(飞行)控制器的 UART 端口 TX 应连接到 UNO 的第 10 针。
(飞行)控制器的 UART 端口 RX 应连接到 UNO 的针脚 11。
(飞行)控制器的 UART 端口 VCC 可以连接到 UNO 的 5V 连接器,以便从(飞行)控制器为 Uno/Pozyx 供电。
应使用 Arduino IDE 加载 室内照明素描 首先更改锚标记,然后将其添加到 Uno 上 在这里找到 以匹配设置中的标记 ID。
此时,您可以通过以下方式测试标签的通信能力:
启动所有锚。
将 UNO 的 B 型 USB 连接到电脑。
连接 Arduino IDE 的串行监视器(设置为波特率 115200),检查是否出现 "Beacon Configuration failed(信标配置失败)"信息。如果出现,请检查 ID 是否已在 IndoorLoiter2.ino 草图(上文)中正确设置。
将 Pozyx 标签安装到 Arduino Uno 的顶部,然后安装到载具上。
通过地面站进行配置¶
连接地面站并设置以下参数:
设置 BCN_TYPE 至 1(表示使用 Pozyx 系统)
设置 BCN_LATITUDE, BCN_LONGITUDE 和 BCN_ALT 以符合您的实际位置。虽然要从 ArduPilot 的小型数据库中正确查找罗盘的偏角,但准确获取这些值并不特别重要。
设置 BCN_ORIENT_YAW 是指从原点锚点到第二个锚点的航向。获取该值的一种方法是,站在原点操纵载具,使其车头指向第二个信标。从 HUD 上读取载具的航向,并将此值输入到 BCN_ORIENT_YAW
设置 EK3_SRC1_POSXY 至 4(灯塔)
设置 EK3_SRC1_VELXY 至 0(无)
设置 EK3_SRC1_VELZ 至 0(无)
设置 EK3_SRC1_POSZ 至 4(灯塔)
设置 EK3_SRC1_YAW 改为 1(指南针),因为该设备需要使用指南针。
设置 上膛检查 到 -9,以禁用 GPS 上膛检查
设置 SERIAL1_BAUD 改为 115,将 SERIAL1 端口的波特率设为 115200(如果使用其他 SERIAL 端口,则将其波特率设为 115)
设置 serial1_protocol 设为 13(信标),以便读取 IndoorLoiter2 协议(如果使用其他端口,请将其协议设为 13)
设置 brd_ser1_rtscts 设置为 0 以确保 Telem1 不使用流量控制(如果使用 Telem2,则设置为 brd_ser2_rtscts 而使用无流量控制的 SERIAL 端口则不需要)。
地面测试¶
将(飞行)控制器连接到地面站。您可能还需要连接锂电池,因为有些电脑的 USB 端口无法为(飞行)控制器+Pozyx+Uno 组合提供足够的电力。
按下 UNO 的白色或红色重置按钮,该按钮位于 USB 端口旁边(见上图)
大约 1 分钟后,载具的位置应跳转到您在配置步骤(上文)中输入的经度和纬度。如果没有,请将 USB 电缆连接到 UNO 的 USB 端口,打开 Arduino IDE 的串行监视器,查找错误。
检查载具位置是否相对稳定(即移动距离不超过一米)
在锚点之间走动载具,确保其在地图上的位置正确更新
飞行测试¶
将发射机设置为稳定、AltHold 和 Loiter 飞行模式。在 AltHold 模式下起飞并保持稳定悬停。切换到 "着陆 "模式,但随时准备在飞行器位置或高度不稳定时切换回 "保持高度 "或 "稳定 "模式。
数据闪存记录¶
与信标的距离可在数据闪存日志 BCN 报文的 D0、D1、D2 和 D3 字段中找到。