kalman-ios, 基于iOS的姿态感知四元数误差状态

分享于 

3分钟阅读

GitHub

  繁體 雙語
Quaternion error-state EKF for attitude sensing on iOS
  • 源代码名称:kalman-ios
  • 源代码网址:http://www.github.com/gareth-cross/kalman-ios
  • kalman-ios源代码文档
  • kalman-ios源代码下载
  • Git URL:
    git://www.github.com/gareth-cross/kalman-ios.git
    Git Clone代码到本地:
    git clone http://www.github.com/gareth-cross/kalman-ios
    Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/gareth-cross/kalman-ios
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
    ios

    作者:Gareth,gcross [dot] 代码 [at] icloud.com

    描述:

    这是一个扩展卡尔曼滤波器( EKF ),用于使用加速度计。陀螺仪和( 可选地) 磁力计的方向传感。 我使用的乘法错误状态四元数格式描述如下:

    卡尔曼滤波的姿态误差表示法。 Landis Markley

    通过以下修改:

    • 陀螺偏差在校准步骤中估计离线。
    • 使用两个外部引用向量代替一个( 如果磁强计已经启用)。
    • 加速度计测量的加速度随加速度的变化而增大。

    在这种过滤器中,设备方向表示为两个转换的乘积,它的名称和误差状态。 标称状态存储为单位长度四元数,而误差状态由 3个欧拉角组成。 四元数表示为数学 compact,在所有可以能的方向( 无奇异) 中数值稳定,适用于航天应用。

    在预测步骤中,采用 4th 阶 Angular 塔与陀螺仪测量的速度集成了标称状态。 通过使用状态四元数投射参考向量( 重力和磁场) 来确定误差状态,并计算测量和预测矢量之间的残差。 最后将对方向的修正复合到名称状态,误差估计为( 重置)。

    筛选器的视频操作: 链接

    实现说明:

    • 这个演示是为iOS编写的,但是所有过滤组件都在通用 C++ 中,并且应该在其他平台上运行而不会出现问题。
    • 使用的磁强计'校准'非常简单,并且不适用于轴灵敏度的变化和轴之间可以能的偏差。 更深入的实现将使用最大似然估计( MLE ) 来查找这些参数。
    • 磁强计可以被禁用,从而使滤波器( 由于磁强计是测量噪音的主要来源) 运行更加平稳。 在这种模式下,偏航轴漂移没有修正- 这可以能是在过滤器不运行的情况下可以接受的。

    STA  STAT  ATT  State  sens  quaternion  
    相关文章