使用Pixhawk 系列飞行控制器时,我们建议使用组合的 GPS + Compass,安装在尽可能远离电机/ESC 电源线的位置 - 通常安装在基座或机翼(用于固定翼)上。内部罗盘在较大的车辆(例如 VTOL)上可能很有用,在这种情况下,可以通过将 Pixhawk 安装在远离电源线的地方来减少电磁干扰。在小型车辆上,几乎总是需要外部指南针。
下面提供了“标准”GPS 配置。PX4 或制造商设备文档(例如Trimble MB-Two > 配置)中可能会提供额外的设备特定配置。
提醒:PX4 预期的 GPS 协议默认为 u-blox(默认情况下,不会检测到其他 GPS 类型,如 Trimble、Emlid、MTK)。该协议可以使用GPS_x_PROTOCOL进行配置。
默认值:1,即u-blox的UBX格式
设置波特率:SER_GPS1_BAUD
配置主 GPS
Pixhawk 上的 GPS 配置对用户来说是透明的——只需将 GPS 模块连接到标有GPS的端口,一切都应该正常工作。
提醒:默认串行端口配置适用于大多数设备。如果您使用Trimble MB-Two,您需要修改配置以明确将速率设置为 115200 波特。
飞控上常用的GPS型号:
目前,用于多旋翼无人机中的GPS,常见的是Ublox的NEO-M8系列
输出数据可配置为以下三种协议:
NMEA
ublox
RTCM
其中NMEA和RTCM协议均为标准协议
精度和频率:
水平的定位精度,如图所示,一般设置在GPS模式时,定位精度为2.5m左右;
输出频率,在GPS模式时,最大输出10hz。
GPS的输出协议
以M8N模块为例,有NMEA、UBX、RTCM3种。
默认NMEA、UBX两种协议都已使能,
但是输出的只有NMEA协议,这个协议是ASCII码形式输出,如果与电脑上位机进行通讯时,用这种方式解析比较方便,
但如果是嵌入式单片机(飞控一般属于此类)与GPS模块进行通信,一般用UBX协议,其输出格式是二进制。
UBX数据帧结构
前两个字节是同步头,接收模块通过查找这两个同步头,可以确定这包数据按照什么格式进行接收。
CLASS字节表明接收的数据组信息;
IP字节表明接收的数据组里的什么信息;
长度信息用两个字节表示,表明数据包里有多少个数据,且是小端模式(大小端模式,主要是说,比如一个16位的数据在传输过程中,将高8位的数据放在前面还是后面)。
PAYLOAD存放的即数据信息。
CK_A和CK_B是两个字节的校验位,对CLASS到PAYLOAD的数据进行校验,为了确保数据包在传输过程中数据的正确。
设置GPS参数
用USB转串口模块,将GPS模块与电脑相连,用官方给的u-center上位机进行设置。
实际应用中,我们可以不需要解码出这么多信息,常用的如下:
经纬度、海平面高度 lat lon alt
锁定类型 fix_type
水平/垂直精度估计 eph epv
水平/垂直精度因子 hdop vdop
GPS噪声值 noise_per_ms
NED系速度 vel_n_m_s vel_e_m_s vel_d_m_s
卫星数 satellites_used
具体可参加无人机飞控相关的GPS知识小结@across
ArduPliot中切换GPS协议
由uBlox协议更换为NMEA
第一步:
默认GPS_TYPE=1,GPS模块输出UBLOX协议
修改为GPS_TYPE=5,GPS模块输出NMEA协议
第二步:
ArduPliot固件中GPS默认的串口为3
SERIAL3_PROTOCOL 5 输入设备类型为GPS
SERIAL3_BAUD 38 通信波特率
1:1200 2:2400 4:4800 9:9600 19:19200 38:38400 57:57600 111:111100 115:115200 230:230400 256:256000 460:460800 500:500000 921:921600 1500:1500000