☰
ArduPilot RTK厘米级定位完整实战指南:从基站配置到EKF融合
2026/9/28 9:10:33 网站建设 项目流程

ArduPilot RTK厘米级定位完整实战指南:从基站配置到EKF融合

【免费下载链接】ardupilotArduPlane, ArduCopter, ArduRover, ArduSub source项目地址: https://gitcode.com/GitHub_Trending/ar/ardupilot

你的多轴做精准归航,落点总差几十厘米;测绘机的航线在地面上看总是漂。根源是同一件事:米级单点GPS的漂移被直接喂进了导航滤波器。下面带你把ArduPilot的RTK定位能力跑通,让位置解从米级压到厘米级。

它解决什么问题:从"米级漂"到"厘米级钉住"

RTK(实时动态定位)的原理是差分:一个站在已知坐标的基站广播误差校正,移动站扣除同样的公共误差,就把精度从米级拉到厘米级。ArduPilot的GPS子系统(libraries/AP_GPS/)把解的质量分成了9个等级,从单点3D(状态3)、DGPS(4)、RTK浮点(5)、RTK固定(6)到PPP(8)。你要盯着的目标只有一个:让日志里的状态字段稳定停在6。

两个核心指标:

  • 🎯定位精度:RTK固定解处于厘米级,实际水平受基站距离与卫星几何影响
  • ⚡更新率:GPSx_RATE_MS支持50~200ms,即10Hz~5Hz,高频控制回路常用10Hz

最小配置跑起来:4步点亮固定解

前提硬件:u-blox F9P级别支持RTK的模块、一台放在开阔处的基站、基站到移动站之间的串行链路。

  1. 硬件就位:基站天线视野开阔,移动站天线装在机体重心上方,远离金属与碳板。
  2. 移动站参数(地面站里设置):
GPS1_TYPE = 18 # u-blox移动基线Rover(移动站) GPS1_RATE_MS = 100 # 10Hz位置更新 GPS1_POS = 0.05 # 天线相对机体中心的X偏移(米)
  1. 基站端(独立基站板时):
GPS1_TYPE = 17 # u-blox移动基线基站 GPS1_RATE_MS = 100 # 校正广播速率,10Hz
  1. 上电等收敛:基站先开机,等约一分钟再开移动站,观察状态从5(浮点)跳到6(固定)。

最容易被忽略的一步是GPS1_POS天线偏移:天线不在机体原点就必须填实测值。尤其双GPS做GPS航向的场景,填错会直接变成位置与航向的系统性偏差。

如果你的机器是车载双GPS方案,把GPS1_MB_TYPE保持0(相对另一路GPS实例做基准),并用MB_OFS描述两副天线的相对偏移;用外部独立基站时则改为1。

它内部如何工作:一张图看懂校正数据流

可以把RTK类比成测量里的水准差分:基站和移动站受到的卫星钟差、电离层延迟几乎相同,用移动站的观测量减去基站的公共部分,公共误差被消掉,只剩微小残差——这就是厘米级的来源。

几个关键点:

  • 驱动层把各模块上报的卫星状态统一成 FixType 枚举,6 即 RTK固定,7 是基站常用静态解
  • EKF3(libraries/AP_NavEKF3/)按噪声模型把GNSS位置速度测量融进状态估计,并用跳变滤波器(glitch filter)拦截毛刺
  • 一旦GNSS被滤波器拒绝,EKF退回IMU航位推算——所以"固定了解但位置乱跳"比没有固定解更危险

关键参数对照与调优建议

参数默认值建议值何时调整
GPS1_TYPE0(关闭)18(移动站)/ 17(基站)启用RTK时必改,改完需重启
GPS1_RATE_MS200(5Hz)100(10Hz)EKF需要更高更新率;注意部分模块10Hz下CPU负担明显
GPS1_MB_TYPE0(车内另一GPS做基准)0 或 1(外部基准)选择校正来源时
EK3_GLITCH_RAD25(cm)25,恶劣环境放宽到50跳变滤波器频繁误触发或漏检时
EK3_GPS_CHECK31(全部检查开)31确认某个检查项误报后,才按位关闭

总原则:先保GNSS链路本身健康,状态、卫星数、HDOP都正常了,再去动EKF的噪声与拒绝门限。反过来调参,等于用滤波器掩盖链路问题。

⚠️ 常见坑位自检:RTK不固定时查这里

现象可能原因自检方法
长期停在5(浮点)基线过远、卫星几何差、多径确认基站距离与可见星数,换点位试基站
固定了但位置周期性跳天线多径反射、馈线弯折走查天线周围遮挡,看日志中GPS状态跳变
EKF频繁拒绝GNSS检查位过严、跳变半径过小核对EK3_GPS_CHECK=31、EK3_GLITCH_RAD=25,先验数据质量
两路GPS互相偏离大天线偏移未设或设错按实测填GPSx_POS与MB_OFS
校正收不到波特率不匹配、链路配置错抓链路确认RTCM3报文有流动

自检顺序建议固定下来:硬件与链路 → 解的类型 → 精度指标 → EKF接受度,逐层推进,不跳步。

总结与下一步

ArduPilot上的RTK不是一个参数,而是一条链:基站、校正链路、驱动解类型、EKF接受度,任何一环断掉,你都会退回米级。固定解稳定之后,可以继续做三件事:

  • 冗余:第二路GPS设为普通类型做备份,RTK失效时自动退回单点
  • 下游应用:厘米级位置让精准着陆、自主对泊、高密度巡线的可用性直接上一个量级
  • 深入源码:浏览 libraries/AP_GPS/MovingBase.cpp 的移动基线参数,以及 AP_NavEKF3 的位置速度融合逻辑,搞清每种 FixType 是如何被滤波器加权的

【免费下载链接】ardupilotArduPlane, ArduCopter, ArduRover, ArduSub source项目地址: https://gitcode.com/GitHub_Trending/ar/ardupilot

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

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

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

立即咨询