我有兴趣,在Kalman滤波器中,如何建立传感器融合设置中的双输入?

例如,您有一个加速度计和陀螺仪,并希望呈现“地平线”级别,就像在飞机上一样,在这里进行类似的演示。

您如何实际收集两个传感器的正属性并最大程度地减少负面?

这是在观察模型矩阵(通常由资本H象征)中建模的吗?


备注:这个问题也没有在没有任何答案的情况下问 Math.stackexchange.com

有帮助吗?

解决方案

通常,传感器融合问题来自贝叶斯定理。实际上,您的估计值(在这种情况下,地平线级别)将是传感器的加权总和,该总和是由传感器模型粘附的。对于双传感器,您有两个共同的选择:模型一个两个传感器系统,并得出每个传感器的Kalman增益(使用系统模型作为预测指标),或使用不同的观察模型运行两个校正阶段。在给定两个不同的信息源的情况下,您应该查看贝叶斯预测变量(比Kalman过滤器更一般),这是从最小化估计值的最小化中得出的。如果您的加权总和最小化了两个传感器的总和,那么您将获得Kalman的收益。

传感器的属性可以在过滤器的两个部分中“看到”。首先,您具有观察结果的错误矩阵。这是表示传感器观察中噪声的矩阵(假定为零平均高斯噪声,这不是一个太大的假设,鉴于在校准过程中,您可以达到零平均噪声)。

另一个重要的矩阵是观察协方差矩阵。该矩阵使您可以了解传感器为您提供信息的好处(信息是“新”,而不依赖于其他传感器读取的信息)。

关于“收获良好特征”,您应该做的是进行良好的校准和噪音表征(拼写还可以吗?)。获得卡尔曼过滤器收敛的最佳方法是为您的传感器建立一个良好的噪声模型,这是100%实验性的。尝试确定系统的差异(不要总是相信数据表)。

希望那些对你有帮助。

其他提示

陀螺仪测量角度变化的速率(例如,每秒钟的弧度为单位),而加速度计读数可以计算角度本身。这是结合这些测量值的简单方法:

每次收到的陀螺仪阅读:

angle_radians+=gyro_reading_radians_per_sec * seconds_since_last_gyro_reading

在收到的每次加速度计读数中:

angle_radians+=0.02 * (angle_radians_from_accelerometer - angle_radians)

0.02常数用于调整 - 它选择噪声排斥和响应性之间的权衡(您不能同时拥有)。这也取决于两个传感器的准确性以及收到新读数的时间间隔。

这两行代码实现了一个简单的一维(标量)卡尔曼过滤器。它假设

  • 陀螺症的噪音非常低 与加速度计(与大多数消费级传感器相比)相比。因此,我们根本不模拟陀螺噪声,而是在状态过渡模型中使用陀螺仪(通常由F表示)。
  • 通常收到加速度计读数 常规时间间隔 加速度计噪声水平(通常为R)是恒定的
  • Angle_radians曾经 初始化 进行初始估计(F.EX通过一段时间的平均angle_radians_from_accelerometer)
  • 因此,估计协方差(P)和最佳Kalman增益(K)是恒定的,这意味着我们根本不需要将估计值保持在变量中。

如您所见,这种方法是简化的。如果未达到上述假设,则应学习一些Kalman过滤理论,并相应地修改代码。

地平线线为g' *(u,v,f)= 0,其中g是重力矢量,u和v图像中心坐标和f焦距。现在,传感器的优缺点:陀螺仪超快速准确,但漂移,加速度计的准确度较低,但(如果校准)的偏置为零,则不会漂移(除了重力外没有加速度)。它们测量不同的事物 - 加速度计测量加速度,因此相对于重力矢量的取向,而陀螺仪测量旋转速度,从而导致方向变化。要将其转换为方向,必须集成其值(值得庆幸的是,它可以以100-200的高FPS进行采样)。因此,应该是线性的卡尔曼过滤器不适用于陀螺。目前,我们可以将传感器融合简化为加权的读数和预测总和。

您可以使用与数据方差成反比的权重,结合两个读数 - 加速度计和集成的陀螺仪和模型预测。您还必须偶尔使用指南针,因为加速度计并没有告诉您有关方位角的太多信息,但我想这与计算地平线无关。系统应具有响应性和准确性,为此目的,每当方向变化迅速地变化时,陀螺仪的权重应大;当系统沉降并旋转停止加速度计的权重时,将增加零偏置读数并杀死从Gyro的漂移。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top