ARTICLE DETAIL

资讯详情

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

ArduPilot RTK高精度定位实战指南:从移动基站到厘米级固定解

ArduPilot RTK高精度定位实战指南:从移动基站到厘米级固定解 ArduPilot RTK高精度定位实战指南从移动基站到厘米级固定解【免费下载链接】ardupilotArduPlane, ArduCopter, ArduRover, ArduSub source项目地址: https://gitcode.com/GitHub_Trending/ar/ardupilotArduPilot 是覆盖固定翼ArduPlane、多旋翼ArduCopter、车Rover、水下艇Sub的开源飞控系统内置完整的 RTKReal-Time Kinematic实时动态差分定位与多传感器融合栈。本文解决RTK 基站怎么配、移动基线怎么打通、EKF 怎么吃进厘米级数据三个问题读完你可以在 U-blox F9P 双天线配置上跑通 RTK 固定解并拿到一份可复现的参数清单。场景不想在起降场旁边架一台固定基站RTK 固定解的前提是附近 20km 内有一台播发校正数据的基站。固定基站需要独立供电和通信链路而 ArduPilot 支持移动基线Moving Baseline模式第二台 GPS 接收器充当可移动的基站跟随主机一起飞实时向主 GPS 播发 RTCM3 校正数据RTK 的差分报文格式。典型用法是双 GPS 模块的多旋翼——一台接固定式天线做基准一台做流动站主机自己播、自己收落点精度稳定在厘米级。核心机制定位状态机与 EKF3 融合链路ArduPilot 用一套定位状态枚举描述 GPS 解算质量源码在 libraries/AP_GPS/AP_GPS_FixType.h// AP_GPS_FixType.h 中的解算状态 enum class AP_GPS_FixType : uint8_t { NO_GPS 0, // 无GPS FIX_3D 3, // 普通3D定位精度约1~3米 DGPS 4, // 差分GPS RTK_FLOAT 5, // RTK浮点解分米级 RTK_FIXED 6, // RTK固定解厘米级 STATIC 7, // 基站静态解 PPP 8, // 精密单点定位 };状态码 5 和 6 就是调 RTK 时最关注的两个数字卡在 5 说明浮点解没收敛稳定在 6 才算真正工作。移动基线的数据流如下融合端在 libraries/AP_NavEKF3/其中 GPS 观测量量测与故障剔除逻辑集中在 libraries/AP_NavEKF3/AP_NavEKF3_Measurements.cpp——它负责判断某帧 GPS 数据是可信融合还是当作 glitch跳变丢弃。RTCM3 报文的解析器 libraries/AP_GPS/RTCM3_Parser.cpp 按 0xD3 前导码逐字节同步单包最大支持 720 字节MAVLink GPS_RTCM_DATA 拆 4 片。动手实操三步配出 RTK 固定解前置条件两块 U-blox F9P或同类支持 RTK 的模块天线之间基线距离建议 1 米以上且互不遮挡。以双旋翼、GPS1 为流动站、GPS2 为基准为例。步骤 1设定基准角色GPS2_TYPE 17 # UBLOX_RTK_BASE基准模式 GPS2_AUTO_CONFIG 2 # 由飞控自动下发配置 GPS2_RATE_MS 100 # 10Hz 解算输出设完后观察地面站验证方法是 GPS2 的状态码变为 7STATIC表示基准站自身锁定了静态解具备了播发校正数据的前提。步骤 2设定流动站并打通数据通道GPS1_TYPE 18 # UBLOX_RTK_ROVER流动站模式 GPS1_AUTO_CONFIG 2 # 自动配置 GPS_DRIVER_OPTIONS 1 # 基准走 UART2 输出 RTCM3GPS_DRIVER_OPTIONS是位掩码bit01 即 MB_USE_UART2让基准的 RTCM3 数据走 UART2 而不是串口透传。验证方法是 GPS1 状态码从 3 → 5浮点→ 6固定收敛一般 1~2 分钟。步骤 3用 EKF 参数接住厘米级数据EK2_GPS_TYPE 1 # 位置速度一起融合 EK2_GLITCH_RAD 50 # 跳变检测半径, 单位cm EK2_GPS_POS_X 0.01 # GPS位置噪声, 固定解可压低验证方法是查看 EKF 日志GPS 相关健康位无bad_gpos/bad_gvel置位且导航位置与实际落点误差 10cm。此时 libraries/AP_GPS/ 下的驱动层与 EKF3 已经闭环RTK 数据不再被滤波端当噪声扔掉。可选双 GPS 自动切换做冗余若 GPS1 是普通模块、GPS2 是 RTK可配GPS1_TYPE/GPS2_TYPE后启用GPS_AUTO_SWITCH 2普通混合或 3RTK 优先混合信号差的那路会被自动降权。逻辑实现在 libraries/AP_GPS/AP_GPS_Blended.cpp切换判据基于定位状态与更新间隔。关键参数对照参数默认值建议值作用GPS_TYPE / GPS2_TYPE1 (AUTO)18 / 17流动站 / 基准角色选择GPS_AUTO_CONFIG22飞控自动下发模块配置GPS_RATE_MS200100解算输出周期10HzGPS_DRIVER_OPTIONS01bit0基准 RTCM3 走 UART2GPS_MB_TYPE000相对备用 GPS 实例GPS_MB_BASE_OFFSET_X/Y/Z0实测值基准天线相对机身坐标偏移(m)GPS_AUTO_SWITCH02 或 30 关 / 2 普通混合 / 3 RTK 混合EK2_GPS_TYPE01是否融合 GPS 速度EK2_GLITCH_RAD2550~100位置跳变判据(cm)太小会误拒 RTK 数据EK2_GPS_POS_X0.020.01GPS 位置噪声(m)固定解下可压低效果验证上机后按下面验收全部达到合格以上才算 RTK 链路真正可用指标优秀合格需改进固定解收敛时间30s30~90s3min水平精度 HAcc0.05m0.05~0.15m0.3mRTK 固定解占比飞行全程95%80~95%80%可见卫星数106~106落点重复精度静止 60s 采样3cm3~8cm10cm避坑清单现象原因解决GPS2 状态一直是 3不播 RTCM基准未进入 STATIC天线被遮挡基准天线独立架高远离金属与电机流动站长期浮点状态 5基线过短/多路径/校正数据丢包拉开天线距离检查 UART2 波特率与线缆地面站显示 RTK 但 EKF 拒绝EK2_GLITCH_RAD过小固定解跳变被判为 glitch提升到 50~100看 EKF 日志 bad_gpos 位切换后定位漂移AUTO_SWITCH 频繁来回切固定主用某一路或调混合阈值飞行中 RTK 掉回 3D基准天线振动/供电跌落检查基准电源纹波与天线固定配置没生效GPS_AUTO_CONFIG被设为 0/1回到 2重启后再查模块实际配置延伸与收尾三个进阶方向一是把 GPS 处理整体搬到协处理器AP_Periph 支持 GPS 卸载与 RC 透传源码在 Tools/AP_Periph/可减轻主 MCU 负担二是深入研究 EKF3 的观测量故障剔除libraries/AP_NavEKF3/AP_NavEKF3_Measurements.cpp 是 GPS 拒绝逻辑的落点三是先用 SITL 仿真跑通参数再上真机避免烧板调参。移动基线 RTK 把基站从起降场解放出来配合双 GPS 冗余厘米级定位可以做成飞行器的出厂配置。核心源码与文档入口GPS 驱动与 RTK 实现libraries/AP_GPS/EKF3 导航滤波libraries/AP_NavEKF3/RTCM3 解析器libraries/AP_GPS/RTCM3_Parser.cpp项目文档docs/【免费下载链接】ardupilotArduPlane, ArduCopter, ArduRover, ArduSub source项目地址: https://gitcode.com/GitHub_Trending/ar/ardupilot创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表