ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

UM982双天线RTK实战:植保无人机厘米级定位全流程

UM982双天线RTK实战:植保无人机厘米级定位全流程 这段时间我一直在折腾一台植保无人机的定位升级目标很明确把UM982这个模组配上双天线RTK在农田环境里真正跑出厘米级定位。折腾完以后我有个感觉网上聊UM982的资料不算少但真正把“双天线怎么装、RTK怎么配、误差怎么调”串起来的实操帖几乎没有。不少朋友拿着模组不知道从哪下手所以我决定把这次的踩坑过程完整记录下来也算给自己留一份备忘。这篇内容适合谁显然不是只聊芯片规格书而是面向真正要把系统装到无人机上、要拿到厘米级定位数据的开发者、植保飞手和开源飞控玩家。不管你是要给植保机升级还是在折腾无人车的双天线定向里面的大部分思路都能直接照着用。1. 为什么农业作业必须上厘米级定位双天线又好在哪1.1 普通GPS在农田场景下的真实痛点农业无人机作业和航拍完全是两个逻辑。植保机的喷幅一般也就4到6米飞行速度通常在6到8米每秒航线之间要做到几乎无缝衔接才能避免漏喷和重喷。普通GPS的动态定位精度在2.5到5米这个量级飞起来以后飞机实际轨迹和规划航线可能差出小半个喷幅。漏喷的地方病虫害压不住重喷的地方又容易药害烧苗这在作物旺盛期尤其明显。我在田里试过用普通GPS模式飞一条往返航线第一遍和第二遍的航线偏差肉眼就能看出来地头转向以后起点根本对不上夜间作业更是全靠运气。后来换成RTK同样一条航线轨迹和规划线基本贴在一起地头折返后的接续误差从几米压到了几厘米顺带把重喷漏喷带来的农药浪费问题也解决了一大半。1.2 单天线RTK和双天线RTK的关键区别单天线RTK能解决“飞机在哪”的问题但解决不了“机头朝哪”。无人机在悬停、低速或者侧风环境下靠磁罗盘估航向经常出问题尤其是农田这种场景电机电调的磁场干扰、大棚金属骨架、灌溉管道、地面铁皮等都会让磁航向漂移。RTK固定解下位置是准的但机头方向不对航线照样偏。双天线RTK为什么在无人机上这么重要因为它不依赖地磁。两根天线装在机体前后同时接收卫星信号通过载波相位的差值求解两天线之间的基线向量机头朝向就从这个向量里直接算出来了。也就是说航向角来自卫星几何关系而不是磁场传感器停机、慢速、强磁干扰环境下依然稳定。对植保机这种需要在低空低速下反复折返作业的飞行器来说这个特性带来的可靠性提升非常明显。另外要明确一个概念RTK的“固定解”才是厘米级浮点解精度一般会降到20到40厘米甚至更差。双天线方案里如果定位浮点解还没固定航向角的精度也会受影响所以整套系统调试的核心目标就是让RTK在大多数作业时段保持固定解状态。1.3 为什么选UM982而不选“RTK模组独立航向模块”早几年想实现“厘米级定位双天线航向”常规做法是买一块RTK板卡做定位再单独买一块双天线定向板卡做航向两块板卡往飞控上一接电源、串口、天线全部翻倍调试起来相当痛苦。UM982这种高集成模组出现以后一个模组同时把定位、RTK解算、双天线定向全包了飞控只需要从一路串口读数据就行。我给自己做了一张选型对比表列完以后发现差距还是很明显的方案模块数量系统复杂度航向精度装机难度成本档位RTK板卡独立定向板卡2高需要同步和融合取决于定向板卡高线缆多高单天线RTK磁罗盘1中需要校准磁干扰受环境磁干扰影响中中UM982双天线RTK单模组1低单串口输出受基线长度影响典型0.2到0.5度低中真正用起来以后我的体会是少一个模块就少一个故障点少一路电源就少一次排查成本。农田环境尘土多、振动大、温差大系统越简单长期可靠性越高这也是我最终确定UM982方案的根本原因。2. 硬件选型与双天线安装关键是细节2.1 一套完整的硬件清单别急着接飞控先把手里的料备齐。我这次装的这套系统硬件清单大概是这样的部件作用注意事项UM982模组定位、定向、RTK解算供电电压严格按手册来主天线接收卫星信号作为基线起点选有源天线注意相位中心一致性从天线接收卫星信号构成基线向量尽量和主天线同型号同批次4G DTU连接NTRIP服务器接收差分改正数选带NTRIP Client功能的工业DTU飞控接收GNSS定位航向数据支持UBX或NMEA协议输入稳压模块给UM982和天线提供干净电源避开动力电调的电源波动射频馈线连接天线和模组RF口两根馈线尽量等长避免额外相位差安装支架固定天线和模组天线朝向正上方支架不要电磁遮挡天线的选择要比模组更用心。两个天线如果相位中心不一致基线向量会带固定误差航向角也跟着偏。我当时特意买了同一批次的同型号天线尽量把这类不一致因素降到最低。4G DTU建议选真正支持NTRIP协议而不是只支持TCP透传的型号后者需要自己拼NTRIP报文调试成本高不少。2.2 双天线布局的三个关键点第一是基线长度。双天线定向的原理本质是通过两天线之间的相位差反推出基线向量基线越长同样的相位误差换算成角度误差就越小。公式不复杂角度误差大约等于相位误差除以基线长度。以30厘米基线为例如果相位误差控制在2毫米左右航向误差大概在0.4度这对植保喷幅6米的场景完全够用。如果飞机结构允许尽量把基线拉开到40到50厘米以上航向稳定性会更好。第二是两个天线的安装位置。主天线朝机头方向从天线朝机尾方向两个天线一定要落在机体纵轴线上否则飞控解算出来的航向和实际机体方向会有固定偏差。我见过有朋友把两天线左右装在机臂上结果航向偏了90度折腾好几天才发现是安装位置的问题。如果受结构限制只能斜着装那要提前量好安装偏角在参数里补偿回来。第三是电缆等长。这个很多人忽略。两根射频馈线如果长度差太多或者一根弯折半径过大一根很直信号到达模组的时间就会有差异这个差异会叠加到相位观测量里造成航向误差。最稳妥的做法是两根馈线长度一致、走线路径对称、弯折半径尽量相同。我当时反复调整了两三次走线才把这个问题彻底排除。2.3 供电和走线的实际避坑UM982这类高集成模组对供电稳定性要求比较高无人机动力电源在加减速时电压波动很大如果直接取动力电RTK解算可能会频繁重启固定解状态一下就丢了。我的做法是单独加了一个低压差稳压模块从电池平衡头取电稳压后再给UM982和天线供电实测下来整个作业过程里定位状态非常稳定没有因为电压波动掉过固定解。走线方面射频线要远离电机线和电调信号线也不要和PWM解调线捆在一起。射频线的屏蔽层虽然能挡一部分干扰但动力线上几十安的电流突变产生的电磁场不是开玩笑的。所有接插件在田间振动环境下都要做防松处理我用的办法是涂一层硅胶固定MMCX接头再扎带固定线缆效果很好。3. 网络RTK配置与通信链路搭建3.1 网络RTK还是自建基站要拿到差分改正数有两种主流思路一种是用网络RTK服务也就是接公共或者商业的CORS服务器另一种是自己架设基准站。农田作业大部分时候属流动场景今天在这块地明天在那块地网络RTK明显更方便只要4G信号稳定插上DTU就能用。自建基站适合固定地块或者网络盲区但需要多一台基准站接收机还要想办法把差分数据发给无人机一般用数传电台或者4G转发。我这次的场景是相对固定的农田测试区域4G覆盖不错所以直接选了网络RTK。如果以后去偏远山地作业大概率会重新评估自建基站数传电台的方案。3.2 UM982与4G DTU的数据流配置网络RTK的数据链路并不复杂但有一个地方特别容易理解反。差分改正数是从服务器流向无人机但服务器必须先知道无人机大概在哪个位置才会下发对应区域的差分数据。这个“大概位置”就是GGA报文里的经纬度所以DTU在连接NTRIP服务器后要定期把UM982输出的GGA发给服务器服务器再接差分改正数下发给DTU。链路方向捋清楚以后配置就顺了UM982通过串口连接DTU串口波特率两边设成一致我用的115200。DTU里填写NTRIP服务器地址、端口、账号、密码、挂载点挂载点一般选支持RTCM3格式的即可。设置GGA上报周期我一般设成1秒避免因为长时间不上报GGA被服务器踢线。确认DTU的IP和服务器之间的网络通断4G卡要保证流量充足。这里要提醒一下有些CORS账号同一个时间只允许一个IP在线如果手机和DTU同时用同一个账号登录可能会互相踢下线。排查NTRIP掉线问题时先看看是不是账号冲突能省下很多时间。3.3 验证RTK数据有没有进来配置完成后别急着上飞控先用电脑把UM982的串口数据抓出来看一眼。NMEA协议里GGA语句的定位质量字段非常直观4代表RTK固定解5代表RTK浮点解。我看到固定解出现的时候说明差分链路已经通了。也可以用脚本统计固定解比例这个指标在农田作业里比单次定位值更有参考意义。我当时写了一个很简单的Python脚本挂串口上统计代码思路不复杂就是逐行解析GGA语句再按定位质量字段计数import serial import time ser serial.Serial(/dev/ttyUSB0, 115200, timeout1) # NMEA GGA定位质量: 4RTK固定解, 5RTK浮点解 quality_map { 0: No Fix, 1: GPS, 2: DGPS, 3: PPS, 4: RTK Fixed, 5: RTK Float, } counters {} print(开始解析GNSS数据按 CtrlC 停止统计) try: while True: line ser.readline().decode(ascii, errorsignore).strip() if GGA not in line: continue parts line.split(,) if len(parts) 7: continue q parts[6] label quality_map.get(q, Unknown) counters[label] counters.get(label, 0) 1 print(f[{time.strftime(%H:%M:%S)}] {label} | 卫星数: {parts[7]} | HDOP: {parts[8]}) except KeyboardInterrupt: print(\n统计结果) for k, v in counters.items(): print(f{k}: {v}) finally: ser.close()拿这个脚本在田里蹲了十几分钟如果“RTK Fixed”占比低于95%说明天线布局、CORS网络或者遮挡条件有问题得先解决再上机。固定率这个指标我建议每位做农业无人机的人都认真测一次它反映的是整套链路在真实环境下的稳定度比看一两个定位点准得多。4. 飞控集成与农田实测4.1 把UM982接到ArduPilot/PX4UM982和飞控连接最常规的路径就是串口。我把UM982的TX接到飞控的GPS接收串口RX对应接过去供电另走稳压模块。ArduPilot里的GPS参数一般保持自动识别即可也就是GPS_TYPE这类参数默认自动配置飞控会自动识别出UBX或者NMEA协议。重点是跑起来以后要确认日志里的状态字段。ArduPilot的日志里GPS_FIX_TYPE字段的数值和NMEA的GGA质量字段不是一回事别搞混在ArduPilot里5代表RTK浮点解6代表RTK固定解而NMEA GGA里固定解是4、浮点解是5。两套数字我都记在调试手册里每次看日志前先提醒自己一句。PX4的流程也类似QGroundControl里的MAVLink控制台能看到RTK状态。它不识别自动模式时需要在参数列表里确认串口对应的GPS协议配置。界面路径不同底层逻辑是同一套。4.2 布设测试场与航线规划飞到田里之前我选了一块相对平坦、周围没有高大树和电线杆的空地做静态测试确认定位和航向都稳定后才开始规划正式的药检航线。规划的时候要注意航线两端预留足够的安全距离避免飞机在地头转弯时超出地块边界。航线间距按喷幅设置比如喷幅6米航线间距就设在5.5到6米之间这样既能覆盖又不会重喷太多。首飞时我始终保留了手动切换的权限没有一上来就全自动。RTK虽然能显著提高定位精度但任何定位系统在极端遮挡或者卫星信号丢失的情况下都可能降级飞控的反应和时间差需要实际观察。农田作业安全永远排在效率前面。4.3 实测过程与数据分析我这次测下来的一组数据比较有代表性固定率98.7%静态模式下定位内符合精度大约2.3厘米动态飞行时无人机的轨迹相对规划AB线的横向偏差均值在3.1厘米左右。这里的横向偏差我是从飞行日志里提取无人机位置和速度方向计算位置到AB线的垂直距离得到的。这个方法也很简单在QGIS或者Python里读日志就能做不依赖额外设备。要注意的是这些数字只是某个时间段、某块田的测试结果不代表设备标称精度。不同天气、不同卫星分布、不同遮挡条件数据会浮动。比如有一次我在果园里测树冠遮了一半天空固定率掉到80%左右横向偏差也明显变大。这说明设备性能上限是一回事实际能达到多少完全看安装和环境。5. 常见问题与排查技巧实录5.1 一直浮点解/固定率上不去这种情况最常出现在刚装机的时候。我的排查顺序是先看卫星数够不够再看天线有没有被机身遮挡接着检查CORS基站距离是否太远最后考虑电离层活跃时段。卫星数少于15颗还硬要固定解多半是天线视野不好。天线位置被碳纤维机臂挡了一半也会导致信号质量差固定率上不去。如果在同一地点手里拿另一台RTK设备却能固定那就怀疑UM982天线本身或者馈线。有条件的话把两根天线交换一下位置试试如果航向偏差跟着交换问题大概率出在天线或者馈线相位一致性上。5.2 双天线航向偏了180度这个故障非常典型现象是无人机在飞控里显示的方向和实际机头方向完全相反。排查下来基本都是主从天线的安装顺序和模组定义不一致导致的。我自己的处理办法是先在飞控设置里做一个航向偏置调整但更彻底的是直接把两根天线的物理位置交换过来或者在固件配置里重新指定主天线端口。交换完以后一定要重新做一次地面测试确认航向角度和机头实际朝向一致再起飞。5.3 RTK数据和飞控断断续续先别怀疑模组坏了大概率是串口配置或者供电问题。我踩过的坑是飞控和UM982的波特率没对齐飞控显示GPS信号一直有但RTK状态时有时无。另外串口线过长或者接线端子接触不良也会导致数据丢帧。最后检查一下电源如果固定解一上大油门就丢基本可以确认是动力电波动影响了模组供电加稳压模块就能解决。5.4 NTRIP账号反复掉线掉线先查账号是否存在多点登录再查4G信号强度和网络连通性。我有一次排查很久最后发现是DTU里的GGA上报周期设成了60秒服务器等不到位置信息直接断开了连接。NTRIP服务器对长时间不上报GGA的客户端会做超时处理把GGA周期改成1到5秒基本就能根治。下面这张速查表是我后来整理给一起调试的朋友用的基本覆盖了大多数入门问题现象常见原因排查与解决一直浮点解不固定天线遮挡、CORS距离远、电离层活跃检查天空视野、换近基站、避开正午电离层活跃时段航向偏180度主从天安装反或端口定义错交换天线位置或调整固件主从配置RTK状态时有时无串口波特率不一致、供电不稳对齐波特率、加稳压模块、检查端子NTRIP频繁掉线账号多点登录、GGA周期太长修改GGA周期、停止其他设备登录同账号定位漂移大但固定率正常天线相位中心不一致、有反射面换同型号天线、远离金属反射物6. 最后再说几句这几次调试下来我最大的体会是厘米级定位从来不是靠某一个部件单独实现的而是一整套链路配合的结果。UM982只是解算核心天线布局、馈线等长、电源稳定、CORS网络状况、飞控参数设置任何一环掉链子最后表现在地面站上都是“定位不准”或者“固定率低”但真正的原因往往藏在细节里。最后再分享一个小技巧调试阶段别急着上机先把模组装在一个固定支架上放在开阔地面用前面那个Python脚本连续记录一段时间确认固定率和位置稳定性都满意后再整套装机。这样能把“设备问题”和“装机问题”彻底分开排查起来能省下大量时间。希望这篇记录能帮你在农田里少走几次弯路。
返回列表