扩展卡尔曼滤波器(EKF)

../_images/advanced-configuration-ekf.png

根据速率陀螺仪、加速度计、罗盘、全球定位系统、空速和气压测量结果,使用扩展卡尔曼滤波器(EKF)算法估算载具位置、速度和角度方向。

与更简单的互补滤波算法(即 "惯性导航 "或 DCM)相比,EKF 的优势在于通过融合所有可用的测量数据,能够更好地剔除误差较大的测量数据。这使得载具不易受到影响单个传感器的故障的影响。EKF 还能利用光流和激光测距仪等可选传感器的测量结果辅助导航。

ArduPilot 当前的稳定版本使用 EKF3 作为主要的姿态和位置估计源,DCM 在后台安静运行。如果(飞行)控制器有两个(或更多)可用的 IMU,则会并行运行两个 EKF "内核"(即 EKF 的两个实例),每个内核使用不同的 IMU。在任何时候,只使用一个 EKF 内核的输出,该内核报告的健康状况最好,这是由其传感器数据的一致性决定的。

大多数用户应该不需要修改任何 EKF 参数,但下面的信息提供了一些关于最常修改的参数的信息。更详细的信息可在 开发人员 EKF 维基页.

应该使用 EKF2 还是 EKF3?

一般来说,我们建议用户坚持使用 EKF3,它现在是默认设置。此外,由于空间限制,1MB (飞行)控制器只能使用该选项。EKF2 仍可使用,但不具备 EKF3 的许多增强功能,例如较新的传感器源(包括信标、车轮编码器和目视航位测量)。

选择 EKF 和内核数量

AHRS_EKF_USE设置为 "1 "可使用 EKF,设置为 "0 "可使用 DCM 进行姿态控制和惯性导航(Copter-3.2.1),或使用 ahrs 惯性推算(Plane)进行位置控制。在 Copter-3.3(及更高版本)中,该参数被强制设置为 "1",且不可更改。

AHRS_EKF_TYPE:设置为 "2 "时,使用 EKF2 进行姿态和位置估计;设置为 "3 "时,使用 EKF3 进行姿态和位置估计。

EK2_ENABLE, EK3_ENABLE:设置为 "1",分别启用 EKF2 和/或 EKF3。

EK2_IMU_MASK, EK3_IMU_MASK:一个位掩码,指定要使用的 IMU(即加速度计/测距仪)。将为指定的每个 IMU 启动一个 EKF "核心"(即单个 EKF 实例)。

  • 1: 使用第一个 IMU 启动单个 EKF 核心

  • 2: 仅使用第二个 IMU 启动单个 EKF 核心

  • 3: 使用第一和第二个 IMU 分别启动两个独立的 EKF 内核

EK3_PRIMARY:选择哪个 "核心 "或 "通道 "作为主通道。值为 0 时,将选择 IMU 中的第一个 IMU 通道。 EK3_IMU_MASK1,第二个,等等。确保所选主车道存在。请参阅下面的耦合性和车道切换。

备注

如果 EKF 不健康或 EKF 无法融合 GPS 数据(尽管 GPS 具有 3D 锁定功能),飞机和UGV无人车将从 EKF2 或 EKF3 回退到 DCM。不会从 EKF3 回退到 EKF2(或从 EKF2 回退到 EKF1)。

警告

使用上述参数可以同时并行运行多达 5 个 AHRS(DCMx1、EKF2x2、EKF3x2),但这会导致性能问题,因此如果并行运行 EKF2 和 EKF3,应设置 IMU_MASK,以减少内核总数。

耦合与车道切换

EKF3 提供传感器耦合性功能,允许 EKF 内核也使用非主要传感器实例,特别是空速、气压计、指南针(磁力计)和 GPS。这样,载具就能更好地管理优质传感器,并能相应地切换车道,使用性能最佳的传感器进行状态估计。有关详细信息和配置,请参阅 EKF3 耦合力和车道切换.

GPS / 非 GPS 转换

EKF3 支持在飞行中切换传感器,这对于在 GPS 和非 GPS 环境之间转换非常有用。参见 GPS / 非 GPS 转换 了解更多详情。

常见修改参数

EK2_ALT_SOURCE 使用哪个传感器作为主要高度源

  • 0:使用气压计(默认值)

  • 1 : 使用测距仪。 除非飞行器在地面平坦的室内飞行,否则请勿使用该选项。.关于以下地形,请参见 旋翼飞行器飞机特定地形以下说明 无需更改该参数。

  • 2 : 使用 GPS。当 GPS 质量很好而气压计漂移可能成为问题时,这种方法就很有用。例如,如果飞行器将执行高度变化为 100 米的长距离任务。

EK2_ALT_M_NSE:默认为 "1.0"。数字越小,对加速度计的依赖越小,对气压计的依赖越大。

EK2_GPS_TYPE:控制 GPS 的使用方式。

  • 0:使用 3D 速度&;2D 定位来自 GPS

  • 1 : 使用 2D 速度&;2D 定位(GPS 速度不用于高度估计)。

  • 2: 使用 2D 定位

  • 3:无 GPS(将使用 光流 仅当可用时)

EK2_YAW_M_NSE:控制计算航向时 GPS 和指南针的权重。默认值为 "0.5",数值越小,则越信任罗盘(即罗盘的权重越高)。

如上所述,有关 EKF 理论和飞行稳定调整参数的更详细概述,可在开发人员维基站点的 扩展卡尔曼滤波器导航概述和调整.

EKF3 回退至 DCM

在 ArduPlane 中,如果 EKF3 停止使用 GPS(即认为 GPS 无法提供准确的位置和速度),但 GPS 仍在报告 3D 锁定,则会使用较旧的滤波器 (DCM) 作为备用。在这种情况下,ArduPlane 会切换到 DCM 滤波器作为其位置、速度和姿态估计器。GCS 消息会显示 DCM 已激活。

EKF3 可能开始拒绝 GPS 的原因多种多样(但仍有 GPS 3D 锁定),但包括 GPS 干扰、剧烈振动使 EKF3 认为其惯性移动到了与 GPS 报告不同的位置等。

使用 DCM(如果 GPS 仍然准确)作为后备过滤器对于固定翼飞行来说并不是一个真正的问题。这是 ArduPlane 最初的惯性导航算法。对于 VTOL QuadPlane 的悬停模式,问题就比较大了,因为 DCM 在其估算器中不考虑速度,所以悬停的精确度较低。

如果观察到 DCM 回退,值得确定根本原因并加以解决,因为这不是理想的运行模式。

但是,在某些情况下,GPS 锁定是有效的,但 GPS 可能提供不正确的数据,导致 DCM 比只使用 EKF3 而不使用 GPS 更差(例如,GPS 干扰环境),这时您可能希望防止回退到 DCM。这可以通过使用 AHRS_OPTIONS 参数。