用于非 GPS 导航的 Nooploop

本文介绍了如何 Nooploop 基于 UWB(超宽带)技术的系统可用作 GPS 的短程替代品,允许 Loiter、PosHold、RTL、室内自动等定位控制模式。

所需硬件

准备锚

需要配置 4 个 Nooploop 节点作为锚点。关注 Nooploop LinkTrack 用户手册 来设置和校准它们。

放置地锚

锚点应放置成矩形。锚 0 将作为 "原点",Nooploop 系统的 Y 轴将作为 "正北"。如果从 0 号锚点到 1 号锚点之间的直线是正北方向,配置就会稍微简单一些,但这并不是必需的。 BCN_ORIENT_YAW 参数可以用来解释这种差异。

../_images/nooploop-anchor-layout.png

准备标签

使用 Nooploop NAssistant 工具配置一个节点作为标记。

  • 将协议设置为 Node_Frame2

  • 将波特率设置为 921600

  • 将更新率设置为 25

  • 将滤波系数设为 0

./_images/nooploop-config-tag.png

将标签连接至飞行控制器

可以将标签的 UART 端口直接连接到 FC。不过,某些 FC 的 UART Tx 与 Nooploop 的 UART Rx 不兼容(据 Nooploop 开发人员称,这似乎是 Nooploop 节点内的 CP2012 造成的。删除 CP2012 有可能解决这个问题)。它会导致 FC 无法与标签通信。Pixhawk 4 mini 和 Kakute F7 已确认存在此问题。在这种情况下,可以使用 Arduino Nano Every 作为一种变通办法。使用 Ardnio IDE 上传 Nooploop 变通草图 并将其 UART Tx 连接到标签的 UART Rx。在下文中,我们假设标签连接到 FC 的 UART 端口(对应 SERIAL1)。

./_images/nooploop-connect-tag.png

通过地面站进行配置

确保在(飞行)控制器上加载 Copter-4.1(或更高版本),并与地面站(即Mission Planner地面站)连接。

  • 设置 BCN_TYPE 至 3(指使用 Nooploop 系统)

  • 设置 BCN_LATITUDE, BCN_LONGITUDEBCN_ALT 以符合您的实际位置。要从 ArduPilot 中的数据库中正确查找罗盘的偏角,需要接近这些值,但完全正确并不特别重要。

  • 设置 BCN_ORIENT_YAW 是指从原点锚点到第二个锚点的航向。获取该值的一种方法是,站在原点操纵载具,使其车头指向第二个信标。从 HUD 上读取载具的航向,并将此值输入到 BCN_ORIENT_YAW

  • 设置 EK3_BCN_DELAY 至 20

  • 设置 EK3_SRC1_POSXY 至 4("灯塔)

  • 设置 EK3_SRC1_POSZ 调至 4("Beacon"),使用 NoopLoop 测量高度,或保留为 "1",使用气压计测量高度。

  • 设置 EK3_SRC1_VELXY 为 0("无)

  • 设置 EK3_SRC1_VELZ 为 0("无)

  • 设置 EK3_SRC1_YAW 为 1("指南针"),因为指南针必须与该设备配合使用。

  • 设置 GPS1_TYPE 为 0 则禁用 GPS

  • 设置 上膛检查 到 -9,以禁用 GPS 上膛检查

  • 设置 SERIAL1_BAUD 至 921,将 SERIAL1 的波特率设置为 921600

  • 设置 serial1_protocol 调至 13 以启用读取 IndoorLoiter2 协议

  • 设置 brd_ser1_rtscts 为 0,以确保 SERIAL1 不使用流量控制(假设它具有此功能)。

地面测试

  • 将(飞行)控制器连接到地面站。

  • 大约 1 分钟后,载具的位置应跳转到您在配置步骤(上文)中输入的经度和纬度。

  • 检查载具位置是否相对稳定(即移动距离不超过一米)

  • 在锚点之间走动载具,确保其在地图上的位置正确更新

飞行测试

将发射机设置为稳定、AltHold 和 Loiter 飞行模式。在 AltHold 模式下起飞并保持稳定悬停。切换到 "着陆 "模式,但随时准备在飞行器位置或高度不稳定时切换回 "保持高度 "或 "稳定 "模式。

数据闪存记录

与信标的距离可在数据闪存日志 BCN 报文的 D0、D1、D2 和 D3 字段中找到。