无人机已经拿到UWB坐标为什么还不能直接自主飞行有客户问了一个很具体的问题他想用无人机跟随一辆遥控车UWB模块已经装好了标签装在地面车上基站装在无人机上坐标数据和距离数据都已经读到了。他问接下来还要买什么特别提到了飞控。这个问题背后的核心其实是UWB输出了坐标和距离为什么不能直接驱动无人机自主飞行下面把从UWB坐标到无人机自主飞行之间缺的每一个环节拆开说清楚。01UWB输出的是什么先看UWB模块实际输出的数据长什么样。LinkTrack标签在DR_MODE0模式下通过NLink协议输出NODE_FRAME2帧。这个帧包含的内容有系统时间戳1926842 ms、位置精度因子eop0.06 m、0.09 m、2.55 m、三轴坐标pos2.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输出的是我现在在哪里而不是我接下来要去哪里。无人机自主飞行需要至少三样东西当前位置由UWB定位提供目标位置用户指定比如飞到坐标1052处或者跟随标签保持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远高于普通GPS5-20Hz这对飞控来说是好事但UWB的定位精度受环境遮挡影响如果无人机在空中被设备或建筑遮挡了基站信号UWB的坐标就会跳变或失效部分飞控固件有需要不少于一定数量卫星才能解锁的逻辑使用伪GPS时需要修改源码绕过卫星数检测UWB标签本身也会振动尤其是无人机上的标签但LinkTrack手册明确说明振动对测距和定位没有影响LinkTrack手册中的QA部分还提到标签、基站、控制台等模块的刷新频率、波特率和协议参数可以各自独立设置。比如T0可以设50HzT1可以设10HzA0可以设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.本文部分图片来源于网络版权归原作者所有如有疑问请联系删除。