无人机已经拿到UWB坐标,为什么还不能直接自主飞行?
2026/9/24 17:30:43 网站建设 项目流程

无人机已经拿到UWB坐标,为什么还不能直接自主飞行?

有客户问了一个很具体的问题:他想用无人机跟随一辆遥控车,UWB模块已经装好了,标签装在地面车上,基站装在无人机上,坐标数据和距离数据都已经读到了。他问接下来还要买什么,特别提到了飞控。

这个问题背后的核心其实是:UWB输出了坐标和距离,为什么不能直接驱动无人机自主飞行?

下面把从UWB坐标到无人机自主飞行之间缺的每一个环节拆开说清楚。

01

UWB输出的是什么

先看UWB模块实际输出的数据长什么样。

LinkTrack标签在DR_MODE0模式下,通过NLink协议输出NODE_FRAME2帧。这个帧包含的内容有:系统时间戳(1926842 ms)、位置精度因子eop(0.06 m、0.09 m、2.55 m)、三轴坐标pos(2.782 m、-0.033 m、1 m)、三轴速度vel(-0.0006 m/s、0.0026 m/s、0 m/s)。这些数据通过串口输出,主控收到后按协议逐字节解码拿到浮点数值。

这个帧是UWB系统能输出的最完整的地面定位信息了。但飞控不认这些

02

第一道坎:协议不通——飞控不认识NLink

这是最直接的问题。几乎所有主流飞控(PX4、ArduPilot、大疆SDK等)都只认两种标准输入协议:

  • NMEA-0183:传统GPS/北斗使用的文本协议,输出$GPGGA、$GPRMC等标准语句
  • MAVLink:无人机生态使用最广泛的通信协议,PX4和ArduPilot的原生协议

UWB标签输出的NLink协议,飞控不认。飞控收到一帧二进制数据,会按照NMEA或MAVLink的格式去解析,结果全是乱码。这时候飞控的判断是"GPS信号无效"——不是它不工作,是它读不懂。

解决办法有两个:

第一个办法是真的把它伪装成GPS。

LinkTrack标签支持NMEA-0183输出协议,输出GGA、GSA、RMC三种数据帧。GGA输出UTC时间、经纬度、定位质量指示符、有效卫星数(这里对应UWB的基站数量)、HDOP(对应UWB的eop.xy)、海拔高度(对应UWB的pos.z)。RMC输出地面速率和航向。这就相当于UWB在模拟一个GPS接收机,飞控看到NMEA协议的数据流,会以为接到了一个GPS模块。

但这里有一个关键问题:输出的经纬度不是真实的经纬度。标签的经纬度是基于从基站坐标系到WGS84坐标系的转换算出来的,真正的做法是在基站安装时把A0A3连线朝向正东,然后人工测量A0基站的真实经纬度,在飞控里用代码对标签输出的伪经纬度加上偏差校正。

第二个办法是绕开飞控的原生定位接口,自己接管。

在主控里(比如STM32或者树莓派)读取UWB的NLink协议数据,自己写位置估计算法和控制逻辑,然后通过MAVLink协议把期望航向和速度"告诉"飞控。飞控只负责底层的姿态稳定和电机控制,不负责导航。这是行业里做跟随、巡检等定制化无人机应用的常见方式,也是AutoRobo A地面车那套逻辑的空中版本——主控做决策,执行器做动作

03

第二道坎:坐标系不对——UWB和飞控说的是两套坐标

飞控使用的是NED坐标系(北-东-地坐标系),而UWB使用的是基站坐标系——以A0为原点、A0到A3连线为x轴正方向、x轴逆时针90度为y轴正方向、z轴垂直向上。如果基站安装时A0A3连线没有对准地理正东,UWB的x轴方向就与飞控的北向不一致,飞控收到的位置会完全对不上。无人机收到"向右飞"的指令,实际却在往前飞。

LinkTrack手册里关于NMEA输出的说明中明确表示:用户需要测量出基站坐标系与WGS84坐标系的夹角,在飞控中对伪GPS输出的经纬度做投影转换;或者在安装基站时让A0到A3的连线朝向地理正东方向来对齐坐标系。此外,A0基站默认的经纬度无法通过配置软件修改,需要在飞控程序中对输出的经纬度加上偏差校正才能得到真实的经纬度。

04

第三道坎:数据链不完整——UWB没有告诉飞控"我要去哪"

即使协议通了、坐标系对上了,还有一个最根本的问题:UWB输出的是"我现在在哪里",而不是"我接下来要去哪里"

无人机自主飞行需要至少三样东西:

  1. 当前位置(由UWB定位提供)
  2. 目标位置(用户指定,比如"飞到坐标(10,5,2)处"或者"跟随标签保持3米距离")
  3. 路径规划和控制算法(怎么从当前位置到达目标位置)

UWB只解决了第一条。第二条 and 第三条需要用户或者主控来提供。以AutoRobo A的跟随逻辑为例,它是这样解决的:AOA Anchor输出Tag相对于Anchor的角度和距离,主控把角度作为被控量、0度作为期望值,当角度不为0时说明方向偏了,通过PID算法控制转向,直到角度归零。距离则采用区间控制——大于设定区间就前进、小于就后退。

这个逻辑的核心在于:主控明确知道"期望状态"是什么——角度0度、距离区间内。如果换成无人机跟随遥控车,同样需要先定义好目标状态:是保持在遥控车正上方、正后方3米,还是以固定高度跟随?

05

第四道坎:基站和标签谁装在哪

对于"无人机跟随遥控车"的场景,有两种安装方案:

方案一:基站装在无人机上,标签装在遥控车上。

Follow-Me用户手册里对无人机的安装建议是:如果标签的工作空间高度低于载体(比如无人机),建议把Anchor安装在无人机机身下方。这意味着Anchor在无人机上朝下安装,Tag在遥控车上。

无人机上的Anchor通过测距测向,输出遥控车上Tag相对于无人机的距离和方位角(AOA模式)。主控根据这个方位角来实时调整无人机的飞行方向,保持朝向遥控车。

方案二:UWB定位网络部署在场地中,无人机和遥控车上各装一个标签。

在厂房内预先部署多个基站(至少4个),无人机上的标签和遥控车上的标签各自输出自身在基站坐标系下的坐标。主控拿到两个坐标后计算差值,得出遥控车相对于无人机的位置向量,然后控制无人机飞向那个位置。

方案一适合室外无遮挡的跟随场景,设备少、部署简单、不需要布设基站。方案二适合室内或需要高精度位置数据的场景,需要预先部署基站,但能提供绝对坐标。

06

第五道坎:飞控还需要哪些数据

UWB能提供位置 and 速度数据,但飞控还需要其他传感器数据才能稳定飞行。标准无人机在GPS模式下飞行时,飞控同时使用GPS、IMU(加速度计/陀螺仪)、磁力计、气压计的数据做融合姿态估计。

如果完全用UWB替代GPS,需要注意:

  • UWB的刷新率(最高200Hz)远高于普通GPS(5-20Hz),这对飞控来说是好事
  • 但UWB的定位精度受环境遮挡影响,如果无人机在空中被设备或建筑遮挡了基站信号,UWB的坐标就会跳变或失效
  • 部分飞控固件有"需要不少于一定数量卫星才能解锁"的逻辑,使用伪GPS时需要修改源码绕过卫星数检测
  • UWB标签本身也会振动(尤其是无人机上的标签),但LinkTrack手册明确说明振动对测距和定位没有影响

LinkTrack手册中的Q&A部分还提到:标签、基站、控制台等模块的刷新频率、波特率和协议参数可以各自独立设置。比如T0可以设50Hz,T1可以设10Hz,A0可以设1Hz。这意味着无人机上的标签和遥控车上的标签可以用不同的刷新率——无人机标签用高频输出自己的位置用于控制,遥控车标签用低频省电。

07

总结:从UWB坐标到自主飞行还差几步

UWB输出坐标和距离

[Step 1]协议转换:NLink → NMEA-0183(伪GPS)或 MAVLink

[Step 2]坐标系对齐:基站坐标系 → NED 或 WGS84

[Step 3]目标定义:告诉飞控"要去哪里",不只是"现在在哪"

[Step 4]控制策略:位置 PID / 角度 PID / 跟随逻辑

[Step 5]飞控融合:UWB + IMU + 磁力计 + 气压计

无人机自主飞行

回到开头那个客户的问题:UWB坐标已经拿到了,为什么还不能直接飞?因为UWB只解决了"我在哪"这一个问题,完整的自主飞行还需要把UWB数据翻译成飞控认识的语言、对齐坐标系、定义飞行目标、写控制逻辑、做多传感器融合。

标签:无人机跟随 / UWB定位 / 飞控集成 / 协议转换 / 坐标系对齐 / 伪GPS / 自主导航

参考资料

[1] Nooploop, LinkTrack User Manual V2.3, 2023.

[2] Nooploop, LinkTrack Datasheet V2.3, 2023.

[3] Nooploop, Follow-Me User Manual V1.0, 2026.

[4] Nooploop, LinkTrack AOA User Manual V1.1, 2024.

[5] Nooploop, AutoRobo A User Manual V1.0, 2020.

[6] PX4 Autopilot User Guide, "GPS/RTK GPS", PX4 Development Team, 2024.

[7] ArduPilot, "Plane GPS Configuration", ArduPilot Dev Team, 2024.

本文部分图片来源于网络,版权归原作者所有,如有疑问请联系删除。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询