固件:PX4
RTK:北力 GRTK
飞控:PIXHAWK4
本文使用的北力RTK是国产板卡,因此需要修改一下GPS驱动才能使用,如果使用的是标准的GPS板卡(如ublox的F9P),可以直接使用即可。
北力 GRTK使用手册
https://wiki.blicube.com/grtk/GRTK%E7%94%A8%E6%88%B7%E6%89%8B%E5%86%8C/
RTK通过串口与飞控通信,可以随便找一个板载的串口都可以,我这里使用的是TELEM2口。将飞控的TX接RTK的RX2,飞控的RX接RTK的TX2,然后共地即可,如下图。

RTK直接用锂电池供电即可,如下图。

我这里设置的是TELEM2
将GPS_1_CONFIG设置为TELEM2,将GPS_1_PROTOCOL设置为Ashtech/Trimble

将SER_TEL2_BAUD设置为RTK的波特率设置(RTK默认是115200)

双天线RTK航向精度较高,可以启动GPS航向,修改EKF2_AID_MASK如下

可以采用GPS高度,修改EKF2_HGT_MODE为GPS,如下

RTK的精度较高,将GPS位置和速度的观测噪声改小,使得融合时更依赖RTK,修改EKF2_GPS_P_NOISE和EKF2_GPS_V_NOISE如下:

修改下图文件

修改如下
将
if (_helper && _helper->configure(_baudrate, gpsConfig) == 0) {
改成
if (_helper) {
_helper->configure(_baudrate, gpsConfig);

飞控里面的卫星数是从gsv语句中获取的,如果RTK没有输出GSV语句,也可以从GGA语句中获取,在下图位置添加如下:
_gps_position->satellites_used=num_of_sv
v
