本文档介绍了ArduPilot的GPS子系统,该子系统可提供来自各种GPS接收器的位置、速度和时间信息。该系统支持多个GPS接收器并发连接、自动驾驶员检测、RTK校正和传感器数据融合。
有关使用 GPS 数据进行传感器融合和位置估计的信息,请参阅“姿态和位置控制”部分。有关与 GPS 相关的布防检查,请参阅“布防和安全系统”部分。
目的和范围
GPS子系统(AP_GPS)管理多个GPS接收机,自动检测GPS类型,解析协议特定的消息,并提供统一的位置和速度数据接口。该系统支持串行、CAN和网络型GPS接收机,精度等级多样,包括标准GPS、DGPS和RTK固定/浮点定位解决方案。
主要能力:
- 支持 10 多种 GPS 接收器类型(u-blox、Trimble、Septentrio、DroneCAN 等)
- 自动驱动程序检测和波特率配置
- 多接收器操作,具备自动故障转移或混合功能
- RTK校正可达到厘米级精度
- 支持基于 GPS 的航向的移动基线
- 与AHRS集成以进行位置估计
系统架构

GPS系统架构:该类AP_GPS管理多个GPS实例,每个实例都有自己的后端驱动程序和状态。后端解析特定协议的消息并更新其关联的GPS_State结构。系统可以将多个GPS接收器混合到一个虚拟实例中,以提高定位精度。
GPS后端架构
所有 GPS 驱动程序都继承自AP_GPS_Backend,它为状态管理、数据验证和与 GPS 子系统的集成提供了通用功能。

后端类层次结构:每个 GPS 驱动程序都实现了read()解析传入数据并更新相关数据的方法GPS_State。后端基类提供了用于速度计算、时间戳管理和数据验证的辅助函数。
GPS检测与初始化

GPS检测和初始化流程:启动AP_GPS::init()时,系统查找配置用于GPS的UART端口。update()如果未检测到驱动程序,系统将循环切换波特率并发送初始化数据包,分析响应字节以识别GPS类型。一旦检测到GPS类型,系统将实例化相应的后端驱动程序。
支持的GPS类型
该系统通过特定协议的后端驱动程序支持多种GPS接收器类型:
| GPS类型 | 后端类 | 协议 | 特征 | 配置 |
|---|---|---|---|---|
| u-blox M8/M9/M10 | AP_GPS_UBLOX |
UBX二进制文件 | RTK、双天线、移动基线 | 通过 UBX 消息自动配置 |
| 特林布尔 | AP_GPS_GSOF |
GSOF 二进制文件 | RTK,高速率 | COM端口选择 |
| 北城 | AP_GPS_SBF |
974



被折叠的 条评论
为什么被折叠?



