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 轴速度) 之后可通过遥控器辅助通道开关在两组数据源间切换。

results matching ""

    No results matching ""