ArduPilot RTK 完整指南:从接线到固定解的 5 步实操路线
ArduPilot RTK 完整指南从接线到固定解的 5 步实操路线【免费下载链接】ardupilotArduPlane, ArduCopter, ArduRover, ArduSub source项目地址: https://gitcode.com/GitHub_Trending/ar/ardupilot你有没有遇到过这种情况多旋翼起飞后本该悬停在同一个点落地时却偏了十几米或者做测绘任务时同一处目标点的坐标每次采出来都不一样问题的根源往往不在飞控而在定位链路——普通的单点 GPS 误差在米级而 ArduPilot 的 RTK 高精度定位能力可以把这个误差压到厘米级。这篇文章不堆术语我们直接按你实际动手的顺序走一遍先接线再配参数然后上电验证固定解最后处理那些就差一步的坑。跟着做你的移动站也能稳定拿到厘米级定位。先搞懂RTK 为什么能到厘米级单点定位靠的是卫星播发的星历和测距码误差天然在米级。RTK实时动态差分的思路很简单在视野开阔的地方放一台基站它自己知道精确坐标于是把我看到的卫星误差打包成 RTCM3 校正数据实时发给远处那台移动站也就是装在飞行器上的 GPS。移动站用这份校正把同一批卫星观测值洗干净位置误差就从米级掉到厘米级。数据流向用一句话说清基站把校正流通过串口或电台喂给飞控飞控里的 libraries/AP_GPS/ 模块解析这些 RTCM3 报文GPS 接收机返回的解算结果里就会带上 RTK 状态标记再交给导航滤波器ArduPilot 用的是 EKF3位于 libraries/AP_NavEKF3/融合进整体位置估计。注意一点RTK 链路里任何一环断了——基站没固定好、串口波特率不够、校正数据迟到——移动站都会自动退回 DGPS 甚至单点解不会报错卡死。所以精度悄悄变差比彻底没信号更难察觉后面验证环节就是冲着这个去的。第一步接线——三条线决定成败以最常见的 U-blox 系列 RTK 组合为例物理连接就三件事基站侧基站天线要架在空旷处楼顶、塔架都行远离大型金属和水面反射面。基站 GPS 接到飞控的一个串口上供电用 5V建议单独走线别和电机共地。移动站侧移动站 GPS 接到飞控的另一个 GPS 串口多数飞控有 2 个独立 GPS 串口正好一主一备。校正数据链路基站产出的 RTCM3 流要能实时送到移动站。常见做法是基站通过电台数传电台、LoRa 或 4G 模块转发如果基站和飞控就在一个系统里也可以直接在飞控内部用 MovingBase 功能桥接省掉外部电台。 一个高频错误移动站 GPS 串口的波特率设得太低。RTCM3 报文量大链路带宽不够时表现为固定解时有时无、飘回漂。如果设备支持把链路速率提到 57600 以上能走更高更好。RTK 基站最小参数集在参数界面Mission Planner 或 QGC里找到你要当作基站的 GPS 通道核心就改这几个值GPS1_TYPE 17 # U-blox RTK 基站 GPS1_AUTO_CONFIG 2 # 自动发送 RTK 所需的全部配置 GPS1_RATE_MS 50 # 20Hz 输出RTK 链路足够GPS_TYPE的 17 对应GPS_TYPE_UBLOX_RTK_BASE含义就是这台 U-blox 以基站身份工作、向外发校正。如果你的 GPS 走的是 DroneCAN 总线而不是串口对应值是 22UAVCAN_RTK_BASE。设完自动配置后飞控会在上电时主动给基站下发 RTCM 输出语句你不需要手动写 U-blox 的 UBX 指令。RTK 移动站最小参数集移动站的配置和基站只差一个角色值GPS2_TYPE 18 # U-blox RTK 移动站 GPS2_AUTO_CONFIG 2 # 自动配置接收机为 RTK 模式18即GPS_TYPE_UBLOX_RTK_ROVER表示这台接收机等着收校正、输出 RTK 解。如果你用的是支持移动基线Moving Base的 Unicore 方案类型值是 25基站可以随车移动而不必完全静止。两个角色参数别配反——基站和移动站是一发一收的关系两台都设成 17 或都设成 18链路就永远握不上手。上电验证怎么判断 RTK 进入固定解上电后不要急着飞先看状态。GPS 解的类型在固件里是一组明确的枚举定义在 libraries/AP_GPS/AP_GPS_FixType.h数值 3普通 3D 单点解米级误差数值 4DGPS 差分解亚米到分米级数值 5RTK 浮点解Float已经比单点好但还在米级徘徊数值 6RTK 固定解Fixed厘米级这才是我们的目标数值 8PPP 精密单点解长收敛后也能到分米至厘米级 判断动作分三层看地面站Mission Planner / QGC 的原始消息或 HUD 上GPS.Status稳定显示 6持续一分钟不掉回 4 或 5。看静态误差飞行器不动连续采 1 分钟位置水平散布应该落在 2~5 厘米内。如果散布有几十厘米说明还在浮点解或链路质量差。看 EKF 融合结果ArduPilot 的 EKF3 会检查 GPS 质量再决定用不用它——卫星数、精度指标、速度一致性不达标时滤波器会主动降低 GPS 权重。地面站的 EKF 状态页如果显示 GPS 被拒用问题在定位链路不在滤波器参数。固定解迟迟不收敛怎么办用现象 → 原因 → 动作的方式过一遍最常见的坑现象一直停在浮点解状态 5原因通常是基站没有获得稳定固定解、或者基站坐标漂移。动作先单独确认基站自己的解是固定的检查基站天线底下有没有大型金属或玻璃幕墙反射换一块开阔地重新收敛。现象固定解频繁跳回单点断断续续八成是校正数据链路丢包。动作降低一次电台发射功率排除干扰、把链路波特率往上提、缩短电台与飞行作业区的距离如果用的是飞控内部桥接确认移动站 GPS 串口波特率与接收机实际设置一致。现象收敛要等很久甚至半小时初始相位模糊度搜索需要时间属于正常现象但太久了要怀疑卫星几何。动作避开高楼和树冠作业、给基站留 10~15 分钟预热时间如果固定翼长航时任务等不起可以在航线外开阔区先开机预热再起飞。现象明明固定了落地点还是偏说明偏差是系统性的天线安装偏置、GPS 天线到机体原点的杆臂参数没设对。动作核对飞控里 GPS 天线相对机身的 X/Y/Z 偏移参数用一根已知长度的标尺量一下再填。EKF 参数调优RTK 到手后再拧这三颗螺丝拿到稳定的固定解之后滤波器的 GPS 使用策略才值得动。默认配置下 EKF3 的位置/速度噪声是按米级 GPS假设的对厘米级 RTK 偏保守融合响应慢半拍。EKF3_GPS_TYPE设为 3让滤波器同时吃位置和速度两组观测量。RTK 的速度解质量远高于单点这一步收益最直接。EKF3_GPS_POS_NOISE/ 速度噪声在默认值基础上适当调小例如位置噪声从 0.5 量级降到 0.1 左右相当于告诉滤波器我给你的 GPS 很准多信它。别一次拧到底每改一档用静态散布实测验证发散再回退。异常检测容差GPS 跳变检测的容差可以适度放宽RTK 在信号边缘短暂回漂时能少触发几次滤波器复位。调优节奏建议一次只动一个参数 → 静态悬停采 2 分钟 → 看散布和滤波收敛曲线 → 再动下一个。所有参数都能在 libraries/AP_NavEKF3/ 对应的融合源码里找到生效位置想深挖为什么这个参数影响这么大时去那里读代码。多 GPS 冗余给遮挡场景买一份保险GPS 信号遮挡是室外作业的常态树林、城市峡谷、机库起飞。ArduPilot 原生支持双 GPS 通道两个接收机各占一个串口互不干扰。推荐的冗余打法主通道跑 RTK 移动站GPS2_TYPE18那台负责精度备用通道挂一台普通单点 GPS类型 1 即可负责信号还有没有的底线当 RTK 链路中断时滤波器可以平滑地退回备用接收机的 3D 解飞行器不会因为一次信号抖动就丢掉位置估计。对固定翼长航时航线还可以给备用 GPS 单独放宽 EKF 的容差参数——它只兜底不需要和主 GPS 同精度同标准。这套高精度主用 低成本备用的组合比单机堆更贵的接收机性价比高得多。不同平台不同的参数脾气多旋翼对悬停精度要求最苛刻是 RTK 收益最大的平台。策略偏激进——位置噪声放心调小、异常容差保持默认落点要稳。固定翼速度快、观测时间短滤波器更怕突然被 GPS 拽一下。策略偏保守——异常检测容差放宽GPS 权重宁低勿高起飞段尤其注意别让 RTK 刚固定就猛拉航向。水下 / 半水下水面段可以正常吃 RTK下潜后 GPS 彻底消失融合全靠 DVL、深度计和 IMU 惯导推算。这类平台在 libraries/AP_InertialNav/ 层面的惯导配置比重比 GPS 参数更重要RTK 在这里的价值主要是入水前把位置基准打准。一句话总结差异旋翼吃精度、固定翼吃平滑、水下吃惯导RTK 参数跟着平台的脾气走别套模板。收工前 60 秒检查清单基站解是固定的天线底下无反射面基站/移动站角色参数分别是 17 和 18或对应 CAN 值校正链路波特率 ≥ 57600电台无干扰GPS.Status稳定为 6静态散布 ≤ 5cmEKF3_GPS_TYPE已设为 3噪声参数按实测收敛备用 GPS 通道有信号EKF 能自动回退下一步建议拿一台备用电调电池让飞行器在你标定过的已知坐标点上悬停 5 分钟把日志里的位置散布导出画个圆。圆够小你的厘米级定位链路就算真正闭环了。【免费下载链接】ardupilotArduPlane, ArduCopter, ArduRover, ArduSub source项目地址: https://gitcode.com/GitHub_Trending/ar/ardupilot创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考