如何使用扩展卡尔曼滤波器进行IMU和光流传感器融合?
How to use the extended kalman filter for IMU and Optical Flow sensor fusion?
我正在建造一架四轴飞行器,我正在使用 pixhawk 自动驾驶系统,并附有 px4flow 传感器以获取光流数据。 px4flow是一款集成陀螺仪和高度传感器的高速智能相机(arm处理器),通过内部光流算法输出线速度。
现在,我想通过使用扩展卡尔曼滤波器来融合 IMU 和光流数据来改进我的位置和速度估计。
我已经推导了预测步骤的状态模型函数和状态转移矩阵。
问题在于导出光流速度的测量值model/function,用于扩展卡尔曼滤波器的更新阶段。我相信我必须以某种方式从光流算法中推导出它,但这是我所得到的。
*edit:这是一篇描述 px4flow 单元及其计算速度的文章。 (忘记添加 link,现在它在那里)
我假设(因为你没有提供任何细节)状态向量包含世界坐标中的速度和位置。光流 returns body 坐标中的 XY 速度,所以你必须根据偏航角旋转它才能获得世界坐标中的速度。
如果是这种情况,您可以选择:
- 如果状态向量不包括方向,pre-transform光流速度到世界坐标,然后使用线性观察模型(零矩阵在你的状态向量中X,Y速度的位置)
- 如果状态向量包含方向,您可以编写使用角度在 world-body 坐标之间转换的完整观察模型。
基本上就是这个过程。但是,为了获得更好的答案,您应该提供更多详细信息。
我正在建造一架四轴飞行器,我正在使用 pixhawk 自动驾驶系统,并附有 px4flow 传感器以获取光流数据。 px4flow是一款集成陀螺仪和高度传感器的高速智能相机(arm处理器),通过内部光流算法输出线速度。
现在,我想通过使用扩展卡尔曼滤波器来融合 IMU 和光流数据来改进我的位置和速度估计。 我已经推导了预测步骤的状态模型函数和状态转移矩阵。
问题在于导出光流速度的测量值model/function,用于扩展卡尔曼滤波器的更新阶段。我相信我必须以某种方式从光流算法中推导出它,但这是我所得到的。
*edit:这是一篇描述 px4flow 单元及其计算速度的文章。 (忘记添加 link,现在它在那里)
我假设(因为你没有提供任何细节)状态向量包含世界坐标中的速度和位置。光流 returns body 坐标中的 XY 速度,所以你必须根据偏航角旋转它才能获得世界坐标中的速度。
如果是这种情况,您可以选择:
- 如果状态向量不包括方向,pre-transform光流速度到世界坐标,然后使用线性观察模型(零矩阵在你的状态向量中X,Y速度的位置)
- 如果状态向量包含方向,您可以编写使用角度在 world-body 坐标之间转换的完整观察模型。
基本上就是这个过程。但是,为了获得更好的答案,您应该提供更多详细信息。