我正在使用此陀螺仪来测量我的机器人绕z轴的旋转。
我想实现一个卡尔曼滤波器以改善其值。
从现在开始,我所带的就是这个空间模型:

$$
θ(k + 1)=θ(k)+ dt *θ'(k)+ w(k)
$$
$$
y(k)=θ(k)+ z(k)
$$
其中$θ$是角度,$θ'$是陀螺仪给出的角速度$ w $是噪音。 (我举起陀螺仪并在稳定状态下测量了50个值,发现方差等于0.0002。)
我想问的是:


是什么我做对了吗?
如何找出$ z(k)$?根据数据表的噪声密度等于0.03 dps / sqrt(hz),如果错误,我如何使用此信息找出$ z(k)$并校正$ w(k)$。


#1 楼

假设角速度是恒定的(即$ \ dot {\ theta} _ {k + 1} = \ dot {\ theta} _ {k} $)在我看来,状态向量应如下所示

$$
\底括号{
\ begin {bmatrix}
\ theta_ {k + 1} \\
\ dot {\ theta} _ {k + 1}
\ end {bmatrix}} _ {\ textbf {x} _ {k + 1}}
\ underbrace {
\开始{bmatrix}
1 &\ Delta t \\
0&1
\ end {bmatrix}
} _ {F}
\ theta_ {k} \ \
\ dot {\ theta} _ {k}
\ end {bmatrix}
+
w_ {k + 1}
$$

$$
\开始{align *}
y_ {k + 1}&= h(\ textbf {x} _ {k + 1})+ z_ {k + 1} \\
&=
\ underbrace {
\ begin {bmatrix}
0&1
\ end {bmatrix}} _ {H}
\ begin { bmatrix}
\ theta_ {k + 1} \\
\ dot {\ theta} _ {k + 1}
\ end {bmatrix}
+
z_ {k + 1}
\ end {align *}
$$

其中$ w_ {k + 1} $是过程噪声而不是传感器噪声(请注意) 。如果您认为没有噪声影响状态向量,并且噪声仅来自传感器(即$ z_ {k + 1} $),并且它必须是均值为零且已知方差为零的高斯噪声,则可以将其设为零即$ \ mathcal {N}(0,\ sigma ^ {2})$)。获得矩阵和噪声参数后,应用卡尔曼滤波器非常简单。希望这会有所帮助

评论


$ \ begingroup $
关于如何找到wk + ​​1的任何建议?
$ \ endgroup $
– ChiPlusPlus
2014年11月27日19:34

$ \ begingroup $
@ Med.ali,请阅读robotics.stackexchange.com/questions/2245/…
$ \ endgroup $
– Croco
2014年11月27日19:47