EKF3 传感器匹配与车道切换
EKF概述
扩展卡尔曼滤波器(EKF)会启动多个滤波器实例,这些实例被称为EKF车道(Lane)(Lanes)。其中主车道(Lane)负责输出飞行器姿态、位置等状态估算数据,其余车道(Lane)在后台同步运算,可随时切换为主车道(Lane)使用。 默认情况下,所有车道(Lane)都会调用主传感器(气压计、GPS、罗盘)采集数据。用户可通过参数设定主传感器;若传感器驱动层出现故障,系统能在飞行过程中自动更换传感器源。
EKF车道(Lane)设置
系统启用的车道(Lane)数量,与当前已启用的惯性测量单元(IMU)数量完全一致。
- 为了更小的CPU负载,
EK3_IMU_MASK默认为3,两组IMU作为参与姿态解算,IMU3作为冗余;对于三组IMU的控制器,您也可以将EK3_IMU_MASK设为7;启用EKF车道(Lane)3。
传感器匹配配置示例
传感器匹配(Affinity)功能仅适用于 EKF3,如果EKF运行失败,请检查以下配置:
EK3_ENABLE:设置为1,启用 EKF3 算法;AHRS_EKF_TYPE:设置为3,指定姿态航向参考系统(AHRS)使用 EKF3
以下为硬件配置示例:飞行器搭载2个气压计、2个GPS、2个空速计、3个罗盘、3个IMU,默认对应的车道(Lane)-传感器绑定关系如下表(表格内数字代表传感器编号):
| 传感器类型 | 车道(Lane) 1 | 车道(Lane) 2 | 车道(Lane) 3 |
|---|---|---|---|
| 空速计(AIRSPEED) | 1号 | 2号 | 1号 |
| 气压计(BAROMETER) | 1号 | 2号 | 1号 |
| GPS | 1号 | 2号 | 1号 |
| 罗盘(MAGNETOMETER) | 1号 | 2号 | 3号 |
EKF数据源选择与设置
除传感器匹配外,也可通过 EK3_SRCn_xxx 系列参数,为不同 EKF 车道(Lane)指定传感器类型。以 EKF3 主数据源为例,相关参数如下:
| 参数名 | 功能说明 | 取值说明 |
|---|---|---|
EK3_SRC1_POSXY |
水平位置数据源 | 0:无 3:GPS 4:信标 6:外部导航 |
EK3_SRC1_VELXY |
水平速度数据源 | 0:无 3:GPS 5:光流传感器 6:外部导航 7:车轮编码器 |
EK3_SRC1_POSZ |
垂直位置数据源 | 0:无 1:气压计 2:测距仪 3:GPS 4:信标 5:外部导航 |
EK3_SRC1_VELZ |
垂直速度数据源 | 0:无 1:气压计 2:GPS 3:外部导航 |
EK3_SRC1_YAW |
偏航角数据源 | 0:无 1:磁力计罗盘 2:GPS 3:GPS失效时回退至Compass |
EKF切换测试
ArduPilot提供三组EKF位置与速度源参数,默认使用第一组(EK3_SRC1组)。
如果您想进行惯性导航(GPS/无GPS导航)等测试验证时
- 可以通过地面站或者机载计算机发
MAV_CMD_SET_EKF_SOURCE_SET mavlink命令来设置源。 - 也可通过遥控器辅助通道开关切换的数据源组(例如,将 RCx_OPTION 参数设为
90/EKF数据源组)
示例配置1
使用双天线定向数据代替磁罗盘,解决罗盘干扰或实现免罗盘校准。
EK3_SRC1_YAW设置为2 (使用GPS航向数据)
示例配置2
使用高精度RTK高程数据,替代气压计,提升高度稳定性。
EK3_SRC1_POSZ设置为3(使用GPS高程数据)
示例配置3
可将3D相机设为外部位置和速度数据源:
EK3_SRC1_POSXY = 6(外部导航 XY 轴位置) EK3_SRC1_VELXY = 6(外部导航 XY 轴速度)(假设相机支持输出速度数据) 将光流设为第二组数据源:
EK3_SRC2_POSXY = 0(无,使用光流时位置为相对位置) EK3_SRC2_VELXY = 5(光流 XY 轴速度) 之后可通过遥控器辅助通道开关在两组数据源间切换。