无人机开发

V1

2022/12/05阅读:10主题:默认主题

PX4 EKF模块解读含matlab代码(下)

本章节继续上节介绍的Px4 中定位模块EKF内容进行介绍,其卡尔曼状态向量与协方差的预测以及卡尔曼滤波的初始化方法见上一章节,可关注微信公众号进行查看。

1、测量方程

1.1 磁力计

磁力计更新分三种情况,第一种方法是用三轴磁力计的数据作为三维观测,第二种方法是将磁力计数据转换为航向角,作为航向角的观测信息,第三种方法是利用磁偏角作为观测信息。

1、三轴磁力计

故其观测方程如下: ,其中 ,其中 为状态变量的第k步预测值,服从均值为0,标准差为_params.mag_noise的高斯分布。

2、磁航向

其中由磁力计数据 转换为磁航向数据的方法见2.2节航向角初始化中的磁力计获取部分(见上篇), 转换得到。

3、磁偏角

由查表或者参数得到。 故其观测方程如下: ,其中 ,其中 为状态变量的第k步预测值,服从均值为0,标准差为 的高斯分布。

1.2 光流

光流传感器的更新主要是速度的更新,其可以观测视线角速率。视线角速率是自主导航中一个非常重要的参数,其在光流中的计算公式如下:

记光流传感器视场中心为点p,imu中心为点i,ned坐标系原点记为o点。其中

即是op向量的变化率在体系的投影。

其计算公式分别如下:

是机体角速率的李代数。

是沿光流传感器视场中心到地面的距离,记为常值,其计算公式如下:

首先计算imu中心至地面的高度 ,其中 为地面在ned系的高度, 为imu中心在ned系的高度, 为光流中心至地面的高度, 为ip向量在高度方向的投影。

故光流传感器的观测方程为:

其中 ,其中 为状态变量 的第k步预测值, 是光流传感器的测量噪声,服从均值为0,标准差为 的高斯分布。

1.3 GPS

普通GPS的更新拆分为GPS速度、水平位置和高度两部分(统一在高度源部分进行介绍),当有双天线时,则多份航向角观测信息。

1、速度与水平位置

由GPS速度、水平位置信息经过空间同步至imu中心点的等效速度、水平位置。 其观测方程如下:

是gps速度的测量噪声,服从均值为0,标准差为 的高斯分布; 是gps位置的测量噪声,服从均值为0,标准差为 的高斯分布,H通过偏导可知为eye(5)。

2、双天线航向角

双天线单位矢量在ned系的坐标为 ,即双天线测量的方位角为

故gps双天线的航向角测量方程如下: ,其中 ,其中 为状态变量 的第k步预测值, 为双天线航向角的测量噪声,服从均值为0,标准差为 的高斯分布。

1.4 空速计

空速计的测量值计算如下:

故空速计测量方程如下: ,其中 ,其中 为状态变量 的第k步预测值, 真空速的测量噪声,服从均值为0,方差为 的高斯分布。由于空速计获得的是EAS(认为EAS==IAS),而ekf中所用的测量信息为TAS,需要交EAS的测量噪声转换至TAS。

其中已知EAS噪声方差为sq(_params.eas_noise)。即可得TAS的方差.

1.5 侧滑角

当为固定翼模式时,由于是BTT控制模式,故可以虚构侧滑角测量信息。

侧滑角测量方程如下: 其中 ,其中 为状态变量 的第k步预测值, 侧滑角的测量噪声,服从均值为0,标准差为 的高斯分布。

1.6 气动力

加速度计测量的阻力与侧向力的表达式如下:

其中单位质量的阻力系数 、侧向力系数 为参数常值。

1.7 高度类传感器

可获取高度源的传感器有气压计、激光、gps、视觉。其测量方程一样。测量值由各类传感器转换至ned系高度。即量测方程如下:

高度的测量噪声,服从均值为0,标准差为 (由高度源决定)的高斯分布。

1.8 视觉

视觉传感器信息含有:世界系至当前机体系的旋转四元数,视觉传感器位置、速度在世界系的坐标投影,其中世界坐标系与ned系存在转换矩阵 。 该坐标系转换参考坐标系的定义与转换章节(所有文章可见公众号)。

  • 速度

由视觉传感器获取的速度信息经坐标转换至ned系,再经过空间同步至imu中心点的等效速度。 其观测方程如下:

,其中 为状态变量 的第k步预测值, 是视觉速度的测量噪声,服从均值为0,标准差为 的高斯分布。

  • 绝对位置

由视觉传感器获取的位置信息经坐标转换至ned系,再经过空间同步至imu中心点的等效位置。 其观测方程如下:

  • 里程计位置 当gps测量的水平位置作为观测信息时,视觉位置则利用前后之差得到里程计信息,进行滤波,其观测方程同上,只是观测值 有所改变,变成里程计信息。

1.9 附加水平速度

地面传感器获得机体的水平速度信息,利用其构造的测量方程如下:

2 传感器的时空同步

由于不同传感器安装位置不同,其融合的时间戳不一致,会导致时间、空间不同步问题。 1、空间同步 ekf中机体系中心为imu中心,故需要将传感器获取的位置、速度信息转换至imu中心点在ned系的位置、速度投影。

记传感器为点s,imu中心为点i,ned坐标系原点记为o点。

其中 空间同步计算公式分别如下:

是机体角速率的李代数。

2、时间同步 将所有传感器存储至回环里,且imu buffer存满至少一个回环后才启动卡尔曼滤波更新方程。并利用imu buffer进行滤波周期的控制,更新时则从传感器buffer中寻求先前与delay imu最相邻的信息进行融合。则每个传感器时间戳与当前delay imu时间戳不超过一帧。 为选择与当前传感器时间戳最近的imu进行融合,故对传感器时间戳扣除一半delay imu时间,使其同步时间戳降低至0.5个滤波周期。

3 卡尔曼滤波输出

通过降采样将IMU数据压入栈中,并利用栈中的数据进行卡尔曼滤波,有效解决了传感器的时间同步问题,但是引入了新的问题,即所估计的imu bias数据存在一定的滞后,故需要引入超前校正量IMU corrections对其进行修正。

Imu周期为 ,ekf周期为 ,当前imu角度增量数据为 ,体系速度增量数据为 ,捷联惯导解算的上一周期姿态、位置、速度,z向位置、z向速度分别为 , IMU corrections中对应的姿态误差项 、位置对准误差项 、速度对准误差项 、z项速度对准误差项

当前ekf输出的四元数为 (EKF中体系以下标 与惯导解算的体系 进行区分),同一时间轴线上output栈中四元数为 ,故其 系至 系的误差四元数:

求得 系至 系误差矢量角为 (转换方法见附录)。 与当前时刻时延为 ,即其传递函数为 ,式中 。对 进行一阶滤波,其增益为 ,即可获得 。 其开环传递函数为: ,故可得闭环特征方程为 ,故当前系统阻尼为

当前拍角度变化修正量为: , 由旋转矢量法得到 ,即

当前拍速度变化修正量为:

故速度:

z向速度:

z向位置: