任意线性系统离散卡尔曼滤波器动态系统模型的推导

卡尔曼滤波器(FC)是用于在存在不完整和嘈杂观测结果的情况下对动态线性系统的参数进行滤波的最佳线性算法。 该过滤器广泛用于技术控制系统中,以评估宏观经济形势或舆论变化的动态。

本文旨在使读者熟悉从动态系统的连续模型(由任意线性微分方程组描述的系统)到离散模型的转换的标准方法。

隐藏文字
以及通过消除发明自行车和在丑陋的灯光下向同事展示自己的尝试来节省读者的时间。 不像作者

本文还旨在鼓励读者在乍看之下似乎不适用线性FC的那些问题中使用FC,但实际上可能并非如此。
作者写一篇文章的事实是,尽管以下内容在Google的俄文和英文搜索结果中都很简单(至少在第一页上),但作者却找不到。

离散卡尔曼滤波器的动力学模型


隐藏文字
基本上,此部分是必要的,以便向读者介绍公认的符号系统,这在本书之间以及在文章之间是非常不同的。 对方程中包含的所有数量的含义的解释超出了本文的范围,而可以理解的是,了解这一点的人对此有所了解。 如果没有,欢迎在这里这里这里

FC既可以离散形式也可以连续形式执行。 从现代数字计算机上的实际实现的角度来看,特别令人关注的是离散FC,本文将对此进行重点介绍。

线性离散FC由以下表达式描述。 让系统模型表示如下:

$$ display $$ \ mathbf {x} _ {k} = F \ mathbf {x} _ {k-1} + \ Psi \ mathbf {u} _k + \ Gamma \ mathbf {w} _k $$ display $$

在哪里 $内联$ f $内联$ -转换矩阵, $内联$ \ Psi $内联$ -过渡控制矩阵, $内联$ \ Gamma $内联$ -过渡扰动矩阵, $内联$ \ mathbf {x} _k $内联$ , $ inline $ \ mathbf {u} _k $ inline $ , $ inline $ \ mathbf {w} _k $ inline $ -系统的状态向量,控制和噪声(干扰) $内联$ k $内联$ 那一步。 观察模型:

$$ display $$ \ mathbf {z} _k = H \ mathbf {x} _k + \ mathbf {n} _k $$ display $$

在哪里 $ inline $ \ mathbf {z} _k $ inline $ , $ inline $ \ mathbf {n} _k $ inline $ -观测向量和观测噪声 $内联$ k $内联$ 那一步。 本文中FC的5个工作方程式没有意义,因此,如果有人需要它们,则在扰流器下给出。

隐藏文字
第一阶段,外推:

$$ display $$ \ mathbf {x} _ {k | k-1} = F \ hat {\ mathbf {x}} _ {k-1} + \ mathbf {w} _k $$ display $$

$$显示$$ P_ {k | k-1} = FP_ {k-1} F ^ T + Q_k $$显示$$

此阶段称为外推。 下一步,称为更正:

$$显示$$ K = PH ^ T(HP_ {k | k-1} H ^ T + R)^ {-1} $$显示$$

评估本身

$$ display $$ \ hat {\ mathbf {x}} _ {k} = x_ {k | k-1} + K(H \ mathbf {z} _k- \ mathbf {x} _ {k | k-1 })$$显示$$

$$显示$$ P_k =(E-KH)P_ {k | k-1} $$显示$$



在下文中,我们讨论的是矩阵的固定(常数系数)系统 $内联$ f $内联$ , $内联$ \ Psi $内联$ 和 $内联$ \ Gamma $内联$ 与数字无关 $内联$ k $内联$ 。

连续动态系统模型。 状态空间。


在绝大多数实际应用中,FC过滤连续时间由微分方程描述的连续动态系统的参数。 在这种情况下,FC的计算在数字计算机上进行,这会自动使FC离散化,因此模型应该是离散的。 为了获得这些连续系统的离散模型,首先必须组成状态向量本身(相位向量),状态方程系统,然后离散化它们,从而获得矩阵 $内联$ f $内联$ , $内联$ \ Psi $内联$ 和 $内联$ \ Gamma $内联$ 。

让系统行为由一组 $内联$ n $内联$ 一阶微分方程:

$$显示$$ \点{\ mathbf {x}}(t)= A \ mathbf {x}(t)+ B \ mathbf {u}(t)+ G \ mathbf {w}(t)$$显示$$

在这里 $ inline $ \ mathbf {x} $ inline $ -- $内联$ n $内联$ 系统的三维状态向量。 状态向量(也称为相位向量)是一个向量,其中包含描述系统及其派生变量的变量,直至达到所需顺序为止。 $ inline $ \ mathbf {u} $ inline $ -- $内联$ r $内联$ 系统的三维控制向量,描述施加在系统上的受控效果。
$ inline $ \ mathbf {w} $ inline $ $内联$ p $内联$ 尺寸向量,包含对系统的随机不受控制的影响或噪声。 $内联$ a $内联$ -系统状态大小矩阵 $ inline $ n \倍n $ inline $ 。 $内联$ B $内联$ -尺寸控制矩阵 $内联$ n \倍r $内联$ 。 $内联$ g $内联$ -大小的摄动矩阵 $内联$ n \倍p $内联$ 。 在该表达式中,所有乘积均根据矩阵乘法的规则进行计算。 在一般情况下,所有矩阵的元素都是时间的函数,但是,本文仅考虑固定系统,其中元素与时间无关。

下面给出从使用高阶微分方程的系统描述到通过状态空间的描述的过渡的示例。

例子
让点沿某个轴的运动 $内联$牛$内联$ 用二阶微分方程描述:

$$ display $$ \ ddot {x} =-\ omega ^ 2 x $$ display $$

如果不记得的话,就代表了一种振荡运动。 通过引入新变量,我们从二阶方程变为两个方程的系统 $ inline $ x_1 = \ dot {x} $ inline $ 。 现在我们有:

$$显示$$ \开始{aligned} \点{x}&= x_1 \\ \点{x} _1&=-\ omega ^ 2 x \ end {aligned} $$显示$$

该方程组可以矩阵形式表示,而状态向量 $ inline $ \ mathbf {x} = [x \,x_1] ^ T $ inline $ ,状态矩阵将为

$$ display $$ A = \开始{bmatrix} 0&1 \\-\ omega ^ 2&0 \ end {bmatrix} $$ display $$

输入变量 $内联$ x_1 $内联$ 起着速度的作用。 矩阵 $内联$ B $内联$ 和 $内联$ g $内联$ 在此示例中,它们为零,因为没有控制和干扰影响。

离散过渡


为了正确过渡到离散区域(换句话说,模型的离散化),我们需要引入矩阵指数的概念。 矩阵指数是类似于Maclaurin的泰勒级数的指数函数展开式所获得的矩阵函数:

$$ display $$ e ^ {At} = E + At + \,... \,\ dfrac {A ^ nt ^ n} {n!} + \,... \,= \ sum_ {k = 0 } ^ {\ infty} \ dfrac {A ^ nt ^ n} {n!} $$显示$$

在哪里 $内联$ E $内联$ 表示单位矩阵。

从状态空间中的连续模型到离散模型的确切过渡,需要寻找齐次系统的解决方案 $ inline $ \点{\ mathbf {x}}(t)= A(t)\ mathbf {x}(t)$ inline $ ,然后过渡到原始系统,从一开始就找到通用解决方案和集成 $内联$ t_0 $内联$ 对一些 $内联$ t $内联$ 。 一个严格的结论可以在[1]中找到;在这里,给出了一个最终结果。

在连续动态模型的平稳性的情况下(与矩阵无关) $内联$ a $内联$ , $内联$ B $内联$ , $内联$ g $内联$ 有时)获得离散模型,我们可以引入系统的辅助转移矩阵 $内联$ \ Phi(t,\ tau)$内联$ 从那一刻起 $ inline $ \ tau $ inline $ 此刻 $内联$ t $内联$ 在哪里 $ inline $ t> \ tau $ inline $ :

$$ display $$ \ Phi(t,\ tau)= e ^ {A(t- \ tau)} = \ sum_ {k = 0} ^ {\ infty} \ dfrac {A ^ nt ^ n} {n! } $$显示$$

此外,使用此辅助矩阵,可以获得离散模型所需的矩阵:

$$显示$$ F = \ Phi(t + T,t)= e ^ {AT} = E + AT + \ dfrac {A ^ 2T ^ 2} {2!} + \ dfrac {A ^ 3T ^ 3} {3!} + ... $$显示$$

$$显示$$ \ Gamma = \ int_ {kT} ^ {(k + 1)T} \ Phi(t_ {k + 1},\ tau)G(\ tau)d \ tau $$显示$$

$$显示$$ \ Psi = \ int_ {kT} ^ {(k + 1)T} \ Phi(t_ {k + 1},\ tau)B(\ tau)d \ tau $$显示$$

在这里 $内联$ B(\ tau)$内联$ 和 $内联$ G(\ tau)$内联$ 我们指的是连续方程的矩阵, $内联$ \ Psi $内联$ 和 $内联$ \ Gamma $内联$ 离散模型所需的矩阵。

实际例子


隐藏文字
不幸的是,这些示例仅具有矩阵的变态 $内联$ f $内联$ ,由于作者懒于发明带有控制动作的示例,因此,作为论文的一部分,他通常研究没有控制动作的导航。 而且,凭借对数学分析的基本了解,在解析示例之后,这些动作不会引起问题。 对于非零示例 $内联$ \ Gamma $内联$ 和 $内联$ \ Psi $内联$ 可以去[2]。

为了说明上述数学,请考虑两个示例。 其中之一是预热,第二个是说明性的,以演示所述方法的功能。

琐碎的


让对象沿轴移动 $内联$牛$内联$ 初始速度 $内联$ v_0 $内联$ 并持续加速 $内联$ a $内联$ 。 然后他的模型可以表示为:

$$ display $$ \ ddot {x} = $$ display $$

我们以齐次微分方程组的形式表示该模型。 为此,我们将方程式分为三个遥控器组成的系统:

$$显示$$ \开始{对齐} \点{x}&= v_x \\ \点{v} _x&= a_x \\ \点{a} _x&= 0 \结束{对齐} $$显示$$

编写方程组时,到目前为止,还添加了以下导数,以计算当前的导数。 然后,在当前系统中,您不能停在 $内联$ v_x $内联$ ,因为计算需要 $内联$ a_x $内联$ 。 同时计算 $内联$ a_x $内联$ 导数 $内联$ \点{a} _x $内联$ 因此,不需要引入上述顺序的导数 $内联$ a_x $内联$ 在状态向量中没有太大意义。

将三个变量组合成状态向量 $内联$ \ mathbf {x} = [x \,v_x \,a_x] ^ T $内联$ 并以矩阵形式编写方程组,以转换为状态空间形式:

$$ display $$ \ dot {\ mathbf {x}} = A \ mathbf {x} $$ display $$

矩阵在哪里

$$ display $$ A = \开始{bmatrix} 0&1&0 \\ 0&0&1 \\ 0&0&0 \ end {bmatrix} $$ display $$

现在我们可以计算与所考虑的连续对应的离散动态系统的转移矩阵:
$ inline $ \ begin {aligned} F = E + A \ cdot T + A \ times A \ cdot \ dfrac {T ^ 2} {2} = \ begin {bmatrix} 1&0&0 \\ 0&1& 0 \\ 0&0&1 \结束{bmatrix} + \开始{bmatrix} 0&1&0 \\ 0&0&1 \\ 0&0&0 \结束{bmatrix} \ cdot T + \\ \开始{bmatrix} 0&0&1 \\ 0&0&0 \\ 0&0&0 \结束{bmatrix} \ cdot \ dfrac {T ^ 2} {2} = \开始{bmatrix} 1&T& T ^ 2/2 \\ 0&1&T \\ 0&0&1 \ end {bmatrix} \ end {aligned} $内联$
读者可以验证 $内联$ A ^ 3 $内联$ 上面是零矩阵
这样,获得了每个人都知道的过渡矩阵,无需任何假设即可推导出该矩阵。

不平凡的例子


我们假设我们的物体在三维空间中以一定的常数(模)线速度运动,并且角速度由伪矢量表示:

$$ display $$ \ omega = [\ omega_x \,\ omega_y \,\ omega_z] ^ T $$ display $$

首先,您需要组成状态空间的方程。 我们写圈时的加速度。 从一个学期的物理课程可以知道,向心加速度是角速度和线速度的向量积:

$$显示$$ \点{v} = \Ω\次v $$显示$$

这里的速度向量是 $ inline $ v = [v_x \,v_y \,v_z] ^ T $内嵌$ 。
我们将更详细地编写向量乘积:

$$ display $$ \ omega \ times v = \开始{bmatrix} \ omega_x \\ \ omega_y \\ \ omega_z \ end {bmatrix} \ times \ begin {bmatrix} v_x \\ v_y \\ v_z \ end {bmatrix} = \开始{bmatrix} \ omega_yz- \ omega_zy \\ \ omega_zx- \ omega_xz \\ \ omega_xy- \ omega_yx \结尾{bmatrix} $$显示$$

现在我们写方程组

$$显示$$ \开始{对齐} \点{x}&= v_x \\ \点{y}&= v_y \\ \点{z}&= v_z \\ \点{v} _x&= \ omega_yz -\ omega_zy \\ \点{v} _y&= \ omega_zx- \ omega_xz \\ \点{v} _z&= \ omega_xy- \ omega_yx \ end {aligned} $$显示$$

转换为矩阵形式后,矩阵 $内联$ a $内联$ 将是:

$$显示$$ A = \开始{bmatrix} 0&0&0&1&0&0 \\ 0&0&0&0&1&0 \\ 0&0&0&0&0&1& \ 0&0&0&0&-\ omega_z&\ omega_y \\ 0&0&0&\ omega_z&0&-\ omega_x \\ 0&0&0&-\ omega_y&\ omega_x&0 \结束{ bmatrix} $$显示$$



接下来,我们进入矩阵 $内联$ f $内联$ 通过相应的表达式。 由于口头乘以矩阵的大小 $内联$ 6 \乘以6 $内联$ 三遍是很困难的,出错的可能性很高,这不是王室的事,那么我们将使用Python sympy库编写脚本:
from sympy import symbols, Matrix, eye x, y, z, T = symbols('xyz T') vx, vy, vz = symbols('v_x v_y v_z') wx, wy, wz = symbols('w_x w_y w_z') A = Matrix([ [0, 0, 0, 1, 0, 0], [0, 0, 0, 0, 1, 0], [0, 0, 0, 0, 0, 1], [0, 0, 0, 0, -wz, wy], [0, 0, 0, wz, 0, -wx], [0, 0, 0, -wy, wx, 0] ]) F = eye(6) + A*T + A*A*T**2/2 from sympy import latex print(latex(F)) 

运行它,我们得到的是这样的:

隐藏文字
 \left[\begin{matrix}1 & 0 & 0 & T & - \frac{T^{2} w_{z}}{2} & \frac{T^{2} w_{y}}{2}\\0 & 1 & 0 & \frac{T^{2} w_{z}}{2} & T & - \frac{T^{2} w_{x}}{2}\\0 & 0 & 1 & - \frac{T^{2} w_{y}}{2} & \frac{T^{2} w_{x}}{2} & T\\0 & 0 & 0 & \frac{T^{2} \left(- w_{y}^{2} - w_{z}^{2}\right)}{2} + 1 & \frac{T^{2} w_{x} w_{y}}{2} - T w_{z} & \frac{T^{2} w_{x} w_{z}}{2} + T w_{y}\\0 & 0 & 0 & \frac{T^{2} w_{x} w_{y}}{2} + T w_{z} & \frac{T^{2} \left(- w_{x}^{2} - w_{z}^{2}\right)}{2} + 1 & \frac{T^{2} w_{y} w_{z}}{2} - T w_{x}\\0 & 0 & 0 & \frac{T^{2} w_{x} w_{z}}{2} - T w_{y} & \frac{T^{2} w_{y} w_{z}}{2} + T w_{x} & \frac{T^{2} \left(- w_{x}^{2} - w_{y}^{2}\right)}{2} + 1\end{matrix}\right] 


在用适当的标签构建框架并将其粘贴到本文的源代码后,结果变成:

$$ display $$ F = \左[\开始{矩阵} 1&0&0&T&-\ frac {T ^ {2} w_ {z}} {2}&\ frac {T ^ {2} w_ {y}} {2} \\ 0&1&0&\ frac {T ^ {2} w_ {z}} {2}&T&-\ frac {T ^ {2} w_ {x}} {2 } \\ 0&0&1&-\ frac {T ^ {2} w_ {y}} {2}&\ frac {T ^ {2} w_ {x}} {2}&T \\ 0&0 &0&\ frac {T ^ {2} \左(-w_ {y} ^ {2}-w_ {z} ^ {2} \ right)} {2} + 1&\ frac {T ^ {2} w_ {x} w_ {y}} {2}-T w_ {z}和\ frac {T ^ {2} w_ {x} w_ {z}} {2} + T w_ {y} \\ 0&0 &0&\ frac {T ^ {2} w_ {x} w_ {y}} {2} + T w_ {z}&\ frac {T ^ {2} \ left(-w_ {x} ^ {2} -w_ {z} ^ {2} \ right)} {2} + 1&\ frac {T ^ {2} w_ {y} w_ {z}} {2}-T w_ {x} \\ 0&0 &0&\ frac {T ^ {2} w_ {x} w_ {z}} {2}-T w_ {y}&\ frac {T ^ {2} w_ {y} w_ {z}} {2} + T w_ {x}&\ frac {T ^ {2} \左(-w_ {x} ^ {2}-w_ {y} ^ {2} \右)} {2} + 1 \ end {matrix} \ right] $$显示$$


因此,可以导出用于圆周运动的卡尔曼滤波器过渡矩阵。
与以前的情况不同,构造的结果 $内联$ a $内联$ 高于3的幂不是零矩阵。

例如<math> $ inline $ A ^ 3 $ inline $ </ math>

$$显示$$ \左[\开始{矩阵} 0&0&0&-w_ {y} ^ {2}-w_ {z} ^ {2}&w_ {x} w_ {y}&w_ {x } w_ {z} \\ 0&0&0&w_ {x} w_ {y}&-w_ {x} ^ {2}-w_ {z} ^ {2}&w_ {y} w_ {z} \ \ 0&0&0&w_ {x} w_ {z}&w_ {y} w_ {z}&-w_ {x} ^ {2}-w_ {y} ^ {2} \\ 0&0&0 &0&w_ {x} ^ {2} w_ {z}-w_ {z} \左(-w_ {y} ^ {2}-w_ {z} ^ {2} \右)&-w_ {x} ^ {2} w_ {y} + w_ {y} \左(-w_ {y} ^ {2}-w_ {z} ^ {2} \右)\\ 0&0&0&-w_ {y} ^ {2} w_ {z} + w_ {z} \左(-w_ {x} ^ {2}-w_ {z} ^ {2} \右)&0&w_ {x} w_ {y} ^ { 2}-w_ {x} \左(-w_ {x} ^ {2}-w_ {z} ^ {2} \右)\\ 0&0&0&w_ {y} w_ {z} ^ {2 }-w_ {y} \左(-w_ {x} ^ {2}-w_ {y} ^ {2} \右)&-w_ {x} w_ {z} ^ {2} + w_ {x} \左(-w_ {x} ^ {2}-w_ {y} ^ {2} \ right)&0 \ end {matrix} \ right] $$显示$$



或<math> $ inline $ A ^ 4 $ inline $ </ math>

$$ display $$ \ left [\ begin {matrix} 0&0&0&0&w_ {x} ^ {2} w_ {z}-w_ {z} \ left(-w_ {y} ^ {2} -w_ {z} ^ {2} \右)&-w_ {x} ^ {2} w_ {y} + w_ {y} \左(-w_ {y} ^ {2}-w_ {z} ^ { 2} \右)\\ 0&0&0&-w_ {y} ^ {2} w_ {z} + w_ {z} \左(-w_ {x} ^ {2}-w_ {z} ^ { 2} \右)&0&w_ {x} w_ {y} ^ {2}-w_ {x} \左(-w_ {x} ^ {2}-w_ {z} ^ {2} \右)\ \ 0&0&0&w_ {y} w_ {z} ^ {2}-w_ {y} \左(-w_ {x} ^ {2}-w_ {y} ^ {2} \右)&- w_ {x} w_ {z} ^ {2} + w_ {x} \左(-w_ {x} ^ {2}-w_ {y} ^ {2} \右)&0 \\ 0&0&0 &-w_ {y} \左(-w_ {x} ^ {2} w_ {y} + w_ {y} \左(-w_ {y} ^ {2}-w_ {z} ^ {2} \右)\ right)+ w_ {z} \ left(w_ {x} ^ {2} w_ {z}-w_ {z} \ left(-w_ {y} ^ {2}-w_ {z} ^ {2} \ right)\ right)&w_ {x} \ left(-w_ {x} ^ {2} w_ {y} + w_ {y} \ left(-w_ {y} ^ {2}-w_ {z} ^ {2} \右)\右)&-w_ {x} \左(w_ {x} ^ {2} w_ {z}-w_ {z} \左(-w_ {y} ^ {2}-w_ { z} ^ {2} \右)\右)\\ 0&0&0&-w_ {y} \左(w_ {x} w_ {y} ^ {2}-w_ {x} \左(-w_ {x} ^ {2}-w_ {z} ^ {2} \ right)\ right)&w_ {x} \ left(w_ {x} w_ {y} ^ {2}-w_ {x} \ left( -w_ {x} ^ {2}-w_ {z} ^ {2} \ right)\ right)-w_ {z} \ left(-w _ {y} ^ {2} w_ {z} + w_ {z} \左(-w_ {x} ^ {2}-w_ {z} ^ {2} \右)\右)&w_ {y} \左(-w_ {y} ^ {2} w_ {z} + w_ {z} \左(-w_ {x} ^ {2}-w_ {z} ^ {2} \右)\右)\\ 0 &0&0&w_ {z} \左(-w_ {x} w_ {z} ^ {2} + w_ {x} \左(-w_ {x} ^ {2}-w_ {y} ^ {2 } \右)\右)&-w_ {z} \左(w_ {y} w_ {z} ^ {2}-w_ {y} \左(-w_ {x} ^ {2}-w_ {y} ^ {2} \右)\右)&-w_ {x} \左(-w_ {x} w_ {z} ^ {2} + w_ {x} \左(-w_ {x} ^ {2}- w_ {y} ^ {2} \右)\右)+ w_ {y} \左(w_ {y} w_ {z} ^ {2}-w_ {y} \左(-w_ {x} ^ {2 }-w_ {y} ^ {2} \ right)\ right)\ end {matrix} \ right] $$显示$$



因此,这种矩阵的表示可能具有有限的精度。 但是,当 $内联$ \ omega T \ ll 1 $内联$ 在矩阵元素中获得的级数 $内联$ f $内联$ 很快收敛。 对于实际使用,足够的成员达到第二等级,很少达到第三等级,甚至更多达到第四等级。

另外,我们说明了矩阵的运算 $内联$ f $内联$ 问矢量 $内联$ \ omega $内联$ , $ inline $ \ bf {x} _0 $ inline $ , $ inline $ \ bf {v} _0 $ inline $ ,以及以下形式的重复序列:

$$ display $$ \ mathbf {x} _k = F \ mathbf {x} _ {k-1} $$ display $$

我们计算该重复序列 $内嵌$ \ omega T \大约\ frac {1} {100} $内嵌$

Python代码
 import numpy as np from numpy import pi T = 1 wx, wy, wz = 0, 2*pi/100/2**.5, 2*pi/100/2**.5 vx0 = 10 A = np.array([ [0, 0, 0, 1, 0, 0], [0, 0, 0, 0, 1, 0], [0, 0, 0, 0, 0, 1], [0, 0, 0, 0, -wz, wy], [0, 0, 0, wz, 0, -wx], [0, 0, 0, -wy, wx, 0] ]) F = np.eye(6) + A * T + A @ A * T**2/2 + A @ A @ A * T**3/6 X = np.zeros((6, 101)) X[:, 0] = np.array([0, 0, 0, vx0, 0, 0]) for k in range(X.shape[1] - 1): X[:, k + 1] = F @ X[:, k] import matplotlib as mpl import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D fig = plt.figure() ax = fig.gca(projection='3d') ax.plot(X[0, :], X[1, :], X[2, :]) ax.set_xlabel('X') ax.set_ylabel('Y') ax.set_zlabel('Z') plt.show() 

让我提醒您,对于np.array类型,符号“ @”表示矩阵乘法。 距离和速度以鹦鹉为单位,角速度以rad / s为单位。 还必须记住,为了获得一个圆,速度和角速度矢量必须垂直,否则将获得一个螺旋而不是一个圆。

结果,设定了一定的初始位置,速度和角速度,就可以获得这样的轨迹

可以通过以下方式获得第一个点和最后一个点的重合精度:
 >>> print(X[:3, 0] - X[:3,-1]) [-0.00051924 -0.0072984 0.0072984 ] 

旋转半径为150个单位量级时,相对误差不超过该量级的值 $ inline $ 5 \ cdot 10 ^ {-5} $ inline $ 。 对于监控转弯目标的FC模型而言,此精度已足够。

结论


如果早期的FC主要用于解决导航问题,在该问题中使用线性运动模型会产生良好的效果,那么随着诸如机器人技术,计算机视觉等现代应用程序的发展,对物体运动的更复杂模型的需求也在增加。 而且,上述方法的应用使得可以不花费特定成本来合成离散的FC模型,这将简化开发人员的工作。 这种方法的唯一局限性在于,必须通过状态空间中的一组线性或至少可线性化的方程来描述动态系统的连续模型。

综上所述,我们可以给出过渡矩阵FC的合成算法:

  1. 编写系统的微分方程
  2. 过渡到状态向量和状态空间
  3. 必要时进行线性化
  4. 以矩阵指数的形式表示过渡矩阵,并在必要时截断级数
  5. 考虑过渡矩阵计算剩余矩阵

作者欢迎对所犯的错误,不准确性,错误的表述,未提及的方法等进行建设性的批评。 感谢您的关注!

二手文献


[1] Medic J.统计最优线性估计和控制。 每 来自英语 埃德 A.S. 莫斯科沙塔洛娃。 出版社,《能源》,1973年,第440页。
[2] Matveev V.V.圣彼得堡捷联惯性系统建设的基础知识:俄罗斯联邦国家研究中心OJSC关注的TsNII Elektribribor,2009年。 -280秒 书号978-5-900180-73-3

Source: https://habr.com/ru/post/zh-CN474150/


All Articles