状态估计器

news2024/9/20 16:56:56

文章目录

    • @[toc]
  • 1.状态空间模型
    • 1.1.连续状态空间模型
    • 1.2.离散状态空间模型
  • 2.矩阵微积分
  • 3.二次规划
  • 4.概率论
    • 4.1.期望与方差
    • 4.2.独立事件
    • 4.3.向量随机变量
    • 4.4.噪声与协方差矩阵
    • 4.5.条件概率
  • 5.最小二乘估计
    • 5.1.加权最小二乘估计
    • 5.2.递推最小二乘估计
    • 5.3.状态向量和协方差随时间变化
  • 6.离散卡尔曼滤波器
  • 7.测量协方差
    • 7.1.平均值与协方差得递推公式
    • 7.2.测量四足机器人传感器协方差
  • 8.离散卡尔曼滤波调参
    • 8.1.协方差
    • 8.2.腾空&触地
  • ref

1.状态空间模型

  • IMU: 加速度计+陀螺仪, 测六轴数据

1.1.连续状态空间模型

  • 一个时间连续的, 定长的线性系统 { x ˙ ( t ) = A c x ( t ) + B c u ( t ) y ( t ) = C c x ( t ) \left\{\begin{matrix} \dot{\bm x}(t)={\bm A}_c{\bm x}(t)+{\bm B}_c{\bm u}(t) \\ {\bm y}(t)={\bm C}_c{\bm x}(t) \end{matrix}\right. {x˙(t)=Acx(t)+Bcu(t)y(t)=Ccx(t)
    • x ( t ) {\bm x}(t) x(t): 系统的状态向量      \;\; u ( t ) {\bm u}(t) u(t): 控制向量      \;\; y ( t ) {\bm y}(t) y(t): 输出向量
    • A c {\bm A}_c Ac: 系统矩阵      \;\; B c {\bm B}_c Bc: 输入矩阵      \;\; C c {\bm C}_c Cc: 输出矩阵
    • 意义: 系统下一阶段的变化 x ˙ ( t ) \dot{\bm x}(t) x˙(t)与系统当前状态 x ( t ) {\bm x}(t) x(t), 系统当前输入 u ( t ) {\bm u}(t) u(t)有关; 系统输出量 y ( t ) {\bm y}(t) y(t)和系统状态 x ( t ) {\bm x}(t) x(t)有关
  • 需要估计的状态量 x \bm x x: 世界系{s}下的机器人运动状态
    • 机身位置 p b {\bm p}_b pb, 机身速度 v b {\bm v}_b vb, 四个足端位置 p 0    p 1    p 2    p 3 {\bm p_0}\;{\bm p_1}\;{\bm p_2}\;{\bm p_3} p0p1p2p3, 均为三维向量, 故 x \bm x x是18维向量
      • x = [ p b v b p 0 p 1 p 2 p 3 ] x=\begin{bmatrix} {\bm p}_b \\ {\bm v}_b \\ {\bm p_0} \\ {\bm p_1} \\ {\bm p_2} \\ {\bm p_3}\end{bmatrix} x= pbvbp0p1p2p3
    • 考虑状态向量的导数 x ˙ \dot{\bm x} x˙, 设四个足端都与地面稳定接触, 则每个足端速度为零
      • x ˙ = [ v b R s b a b + g 0 3 × 1 0 3 × 1 0 3 × 1 0 3 × 1 ] \dot{x}=\begin{bmatrix} {\bm v}_b \\ {\bm R}_{sb}{\bm a}_b+{\bm g} \\ {\bm 0}_{3\times1} \\ {\bm 0}_{3\times1} \\ {\bm 0}_{3\times1} \\ {\bm 0}_{3\times1} \end{bmatrix} x˙= vbRsbab+g03×103×103×103×1
  • 可测量的输出量:
    • IMU测得{s}的机身姿态 R s b \bm R_{sb} Rsb , {b}的 a b    ,    ω b \bm a_b\;,\;\bm\omega_b ab,ωb;
    • 由各关节编码器&正运动学得{b}下足端相对机身位置 p b f B {\bm p}_{bfB} pbfB 和{s}的 p s f B {\bm p}_{sfB} psfB;
    • {s}的足端相对机身速度 v s f B \bm v_{sfB} vsfB;
    • 又四个足端全触地,高度为0
  • 输出向量 y \bm y y, 28维向量
    • y = [ p s f B 0 p s f B 1 p s f B 2 p s f B 3 v s f B 0 v s f B 1 v s f B 2 v s f B 3 p s z 0 p s z 1 p s z 2 p s z 3 ] \bm y=\begin{bmatrix} {\bm p}_{sfB0} \\ {\bm p}_{sfB1} \\ {\bm p}_{sfB2} \\ {\bm p}_{sfB3} \\ {\bm v}_{sfB0} \\ {\bm v}_{sfB1} \\ {\bm v}_{sfB2} \\ {\bm v}_{sfB3} \\ p_{sz0} \\ p_{sz1} \\ p_{sz2} \\ p_{sz3} \end{bmatrix} y= psfB0psfB1psfB2psfB3vsfB0vsfB1vsfB2vsfB3psz0psz1psz2psz3

1.2.离散状态空间模型

  • 程序必然每隔一段时间采样一次数据, 称离散系统, 要使用与之对应的离散状态空间模型, 以 k k k表示第k个时刻
    • { x ˙ ( k ) = A x ( k − 1 ) + B u ( k − 1 ) y ( k ) = C x ( k ) \left\{ \begin{matrix} \dot{\bm x}(k)={\bm A}{\bm x}(k-1)+{\bm B}{\bm u}(k-1) \\ {\bm y}(k)={\bm C}{\bm x}(k)\end{matrix}\right. {x˙(k)=Ax(k1)+Bu(k1)y(k)=Cx(k)

2.矩阵微积分

  • 二次型的偏导数计算
    • ∂ x T A x ∂ x = x T A T + x T A \frac{\partial{\bm x}^{\rm T}\bm A x}{\partial \bm x}=\bm x^{\rm T}\bm A^{\rm T}+\bm x^{\rm T}\bm A xxTAx=xTAT+xTA
      • 对对称矩阵 A = A T \bm A=\bm A^{\rm T} A=AT ∂ x T A x ∂ x = 2 x T A \frac{\partial{\bm x}^{\rm T}\bm A x}{\partial \bm x}=2\bm x^{\rm T}\bm A xxTAx=2xTA
  • 对矩阵与向量乘积的偏导数
    • ∂ A x ∂ x = A ∂ x T A ∂ x = A T \begin{matrix} \frac{\partial\bm A\bm x}{\partial \bm x}=\bm A \\ \frac{\partial\bm x^{\rm T}\bm A}{\partial \bm x}=\bm A^{\rm T} \end{matrix} xAx=AxxTA=AT
  • 对矩阵的迹
    • ∂ T r ( A B A T ) ∂ A = A B T + A B \frac{ \partial {\rm Tr}(\bm A\bm B\bm A^{\rm T})}{\partial \bm A}=\bm A\bm B^{\rm T}+\bm A\bm B ATr(ABAT)=ABT+AB
      • 对对称矩阵 A = A T \bm A=\bm A^{\rm T} A=AT ∂ T r ( A B A T ) ∂ A = 2 A B \frac{ \partial {\rm Tr}(\bm A\bm B\bm A^{\rm T})}{\partial \bm A}=2\bm A\bm B ATr(ABAT)=2AB

3.二次规划

  • 二次规划QP(Quadratic Programming)广泛用于最优化问题, 卡尔曼滤波器是最优状态估计的一种
    • y = a x 2 + b x + c y=ax^2+bx+c y=ax2+bx+c求最值, 令 y ˙ = 2 a x + b = 0 \dot{y}=2ax+b=0 y˙=2ax+b=0
  • 定义代价函数J为标量 J = x T A x + b x + c J=\bm x^{\rm T}\bm A \bm x+\bm b \bm x + c J=xTAx+bx+c
    • A \bm A A为对称矩阵, 正定矩阵, 偏微分 ∂ J ∂ x = 2 A x + b = 0 \frac{\partial J}{\partial \bm x}=2\bm A\bm x+\bm b=0 xJ=2Ax+b=0
    • J J J取最小值, x = − 1 2 A − 1 b \bm x=-\frac{1}{2}\bm A^{-1}\bm b x=21A1b, 即二次规划的理论解

正定矩阵 A \bm A A, 对任意非零向量 v \bm v v, 有 v T A v > 0 \bm v^{\rm T}\bm A\bm v>0 vTAv>0


4.概率论

4.1.期望与方差

  • 期望 E ( x ) \bm E(x) E(x) x ‾ \overline{x} x: 平均值
    • E ( x + y ) = E ( x ) + E ( y ) E(x+y)=E(x)+E(y) E(x+y)=E(x)+E(y)
  • 方差 σ x 2 \sigma_x^2 σx2 描述随机变量 x x x对期望 x ‾ \overline{x} x的离散程度大小
    • σ x 2 = E [ ( x − x ‾ ) 2 ] \sigma_x^2=E[(x-\overline{x})^2] σx2=E[(xx)2]
  • 表示: x ∼ ( E ( x ) , σ x 2 ) x\sim (E(x),\sigma_x^2) x(E(x),σx2)

4.2.独立事件

  • 协方差 C x y = E [ ( x − x ‾ ) ( y − y ‾ ) ] C_{xy}=E[(x-\overline{x})(y-\overline{y})] Cxy=E[(xx)(yy)]
  • 一个事件的发生对另一个事件发生的概率无影响, 则两事件互为独立事件, 其协方差 C x y = 0 C_{xy}=0 Cxy=0

4.3.向量随机变量

  • 矩阵的期望即对矩阵每个元素分别求期望
  • 随机变量 x    y \bm x\;\bm y xy 的协方差矩阵 C x y = E [ ( x − x ‾ ) ( y − y ‾ ) T ] \bm C_{xy}=E[(\bm x-\overline{\bm x})(\bm y-\overline{\bm y})^{\rm T}] Cxy=E[(xx)(yy)T]
    • C x y \bm C_{xy} Cxy为对称阵
  • 随机变量 x \bm x x 和自己的协方差矩阵 C x = E [ ( x − x ‾ ) ( x − x ‾ ) T ] \bm C_{x}=E[(\bm x-\overline{\bm x})(\bm x-\overline{\bm x})^{\rm T}] Cx=E[(xx)(xx)T]
    • C x \bm C_x Cx对称阵, 对角项分别为随机变量 x \bm x x各项的方差
    • x \bm x x的各项相互独立, 则协方差矩阵 C x \bm C_x Cx对角矩阵, 非对角项为0

4.4.噪声与协方差矩阵

  • 白噪声: t 1 t_1 t1时刻噪声向量 v ( t 1 ) \bm v(t_1) v(t1) t 2 t_2 t2时刻噪声向量 v ( t 2 ) \bm v(t_2) v(t2)之间相互独立, 可对任一时刻噪声单独分析
    • 协方差矩阵为对角矩阵, 且每一对角项为 v \bm v v对应元素的方差值
    • 单四足机器人噪声每一项通常不是相互独立的

4.5.条件概率

  • 若随机变量 x \bm x x和随机变量 y \bm y y之间不独立, 不同 y \bm y y值下随机变量 x \bm x x期望 E ( x ) E(\bm x) E(x)不同
    • 已知 y = y 1 \bm y=\bm y_1 y=y1条件下的 x \bm x x期望表示为 E { x ∣ y 1 } E\{\bm x|\bm y_1\} E{xy1}

5.最小二乘估计

  • 测量输入向量 y \bm y y必包含噪声向量 v \bm v v, 设 x k \bm x_k xk定值
    • y k = C x + v k \bm y_k=\bm C\bm x+\bm v_k yk=Cx+vk, v ∼ ( 0 , R ) \bm v\sim(0,\bm R) v(0,R), R = E ( v v T ) \bm R=E(\bm v\bm v^{\rm T}) R=E(vvT)对角阵

5.1.加权最小二乘估计

  • 测量残差 ϵ y = y − C x ^ \bm \epsilon_y=y-\bm C\hat{\bm x} ϵy=yCx^
    • 当各项二次方和取得最小值, 状态向量值就是最有估计值 x ^ \hat{\bm x} x^
    • 代价函数 J = ϵ y 1 2 + ϵ y 2 2 + . . . + ϵ y n 2 = ϵ y T ϵ y J=\epsilon_{y1}^2+\epsilon_{y2}^2+...+\epsilon_{yn}^2={\bm \epsilon}_{y}^{\rm T}{\bm \epsilon}_{y} J=ϵy12+ϵy22+...+ϵyn2=ϵyTϵy
    • 引入加权, 与方差成反比 J = ϵ y 1 2 σ 1 2 + ϵ y 2 2 σ 1 2 + . . . + ϵ y n 2 σ 1 2 = ϵ y T R T ϵ y = ( y − C x ^ ) T R − 1 ( y − C x ^ ) = y T R − 1 y − y T R − 1 C x ^ − x ^ T C T R − 1 y − x ^ T C T R − 1 C x ^ \begin{matrix} J=\frac{\epsilon_{y1}^2}{\sigma_1^2}+\frac{\epsilon_{y2}^2}{\sigma_1^2}+...+\frac{\epsilon_{yn}^2}{\sigma_1^2}={\bm \epsilon}_{y}^{\rm T}{\bm R^{\rm T}}{\bm \epsilon}_{y} \\ =(\bm y-\bm C\hat{\bm x})^{\rm T}{\bm R}^{-1}(\bm y-\bm C\hat{\bm x}) \\= {\bm y^{\rm T}\bm R^{-1}\bm y} - {\bm y^{\rm T}\bm R^{-1}\bm C\hat{\bm x}} - {\hat{\bm x}^{\rm T}\bm C^{\rm T}\bm R^{-1}\bm y} - {\hat{\bm x}^{\rm T}\bm C^{\rm T}\bm R^{-1}\bm C\hat{\bm x}} \end{matrix} J=σ12ϵy12+σ12ϵy22+...+σ12ϵyn2=ϵyTRTϵy=(yCx^)TR1(yCx^)=yTR1yyTR1Cx^x^TCTR1yx^TCTR1Cx^
    • 矩阵 R    \bm R\; R是对角阵, R − 1 \bm R^{-1} R1是对角阵, 每一项为 R \bm R R对应项导数
    • 由二次规划方法计算代价函数偏导取0 ∂ J ∂ x ^ = − 2 y T R − 1 C + 2 x ^ T C T R − 1 C = 0 \frac{\partial J}{\partial\hat{\bm x}}=-2{\bm y^{\rm T}\bm R^{-1}\bm C}+{2\hat{\bm x}^{\rm T}\bm C^{\rm T}\bm R^{-1}\bm C}=0 x^J=2yTR1C+2x^TCTR1C=0
      • 得对状态 x \bm x x的最优估计结果 x ^ = ( C T R − 1 C ) − 1 C T R − 1 y \hat{\bm x}=(\bm C^{\rm T}\bm R^{-1}\bm C)^{-1}\bm C^{\rm T}\bm R^{-1}\bm y x^=(CTR1C)1CTR1y

5.2.递推最小二乘估计

  • 上面的最优估计结果, 要利用一段时间所有测量值 y \bm y y, 矩阵将变得很大, 占用内存影响速度, 故采用递推最小二乘估计
  • 状态 x \bm x x的最优估计 x ^ \hat{\bm x} x^递推公式 { y k = C x + v k x ^ k = x ^ k − 1 + K k ( y k − C x ^ k − 1 ) \left\{ \begin{matrix} {\bm y}_k={\bm C\bm x}+{\bm v}_k\\ \hat{\bm x}_k=\hat{\bm x}_{k-1}+{\bm K}_k(\bm y_k-\bm C\hat{\bm x}_{k-1})\end{matrix} \right. {yk=Cx+vkx^k=x^k1+Kk(ykCx^k1)
    • y k \bm y_k yk: 当前时刻的测量结果, 假设状态向量 x \bm x x是固定常量
    • v k \bm v_k vk: 当前时刻的噪声向量
    • x ^ k − 1 \hat{\bm x}_{k-1} x^k1: 上一时刻的最优状态估计, 以 K k ( y k − C x ^ k − 1 ) {\bm K_k}(\bm y_k-\bm C\hat{\bm x}_{k-1}) Kk(ykCx^k1)来修正, 得到当前时刻最优状态估计 x ^ k \hat{\bm x}_k x^k
    • K k \bm K_k Kk: 最优的修正系数矩阵, 需要求解出最优
  • 求解最优的修正系数矩阵 K k \bm K_k Kk
    • k k k 时刻的状态估计误差 ω k = x − x k ^ = ⋯ = ( I − K k C ) ω k − 1 − K k v k {\bm\omega_k={\bm x}-\hat{\bm x_k} = \dots = (\bm I - \bm K_k\bm C){\bm \omega}_{k-1}-{\bm K}_k{\bm v}_k} ωk=xxk^==(IKkC)ωk1Kkvk
    • 使用二次规划, 令 k k k时刻各个状态估计误差方差之和最小
      • 代价函数 J k = E ( ω k 1 2 + ω k 2 2 + ⋯ + ω k n 2 ) = σ k 1 2 + σ k 2 2 + ⋯ + σ k n 2 = T r ( P k ) \begin{matrix} J_k=E(\omega_{k1}^2+\omega_{k2}^2+\dots+\omega_{kn}^2)\\=\sigma_{k1}^2+\sigma_{k2}^2+\dots+\sigma_{kn}^2\\=\rm Tr(\bm P_k)\end{matrix} Jk=E(ωk12+ωk22++ωkn2)=σk12+σk22++σkn2=Tr(Pk)
        • P k = E ( ω k ω k T ) \bm P_k=E(\bm\omega_k\bm\omega_k^{\rm T}) Pk=E(ωkωkT): ω k \bm \omega_k ωk k k k时刻的协方差矩阵, 为对称矩阵, 对角项是各误差的方差, 即 J k J_k Jk可表达为 T r ( P k ) \rm Tr(\bm P_k) Tr(Pk)
        • 展开并考虑状态估计误差 ω k − 1 \bm\omega_{k-1} ωk1与测量噪声 v k − 1 \bm v_{k-1} vk1相互独立, 且为零均值噪声, 得估计误差的协方差递推公式 P k = ( I − K k C ) P k − 1 ( I − K k C ) T + K k R K k T \bm P_k=(\bm I-\bm K_k\bm C)\bm P_{k-1}(\bm I-\bm K_k\bm C)^{\rm T}+{\bm K}_k{\bm R}{\bm K}_{k}^{\rm T} Pk=(IKkC)Pk1(IKkC)T+KkRKkT
          • R \bm R R: 测量误差 v \bm v v的协方差, 即当前 k k k时刻估计误差协方差 P k \bm P_k Pk与上一时刻协方差 P k − 1 \bm P_{k-1} Pk1及测量误差协方差 R \bm R R有关
      • 对迹求偏导: ∂ J k ∂ K k = ∂ T r ( P k ) ∂ K k = 0 \frac{\partial J_k}{\partial\bm K_k}=\frac{\partial{\rm Tr}(\bm P_k)}{\partial\bm K_k}=0 KkJk=KkTr(Pk)=0
      • 得最优 K k = P k − 1 C T ( R + C P k − 1 C T ) − 1 \bm K_k={\bm P_{k-1}\bm C^{\rm T}(\bm R+\bm C\bm P_{k-1}\bm C^{\rm T})^{-1}} Kk=Pk1CT(R+CPk1CT)1
  • 最小二乘估计的计算流程
  • 确定初始钻杆太最优估计值 x ^ 0 \hat{\bm x}_0 x^0与估计值协方差 P 0 \bm P_0 P0
    • 当对系统状态 x \bm x x完全不了解, 可将 x 0 ^ \hat{\bm x_0} x0^设为任意值, P 0 = ∞ I \bm P_0=\infty \bm I P0=I(可信度极低)
    • 当对 x 0 ^ \hat{\bm x_0} x0^非常确定, 可令 P 0 = 0 \bm P_0=0 P0=0
  • 开始运行时刻 k = 1 k=1 k=1, 到时刻 k k k
    • K k = P k − 1 C T ( R + C P k − 1 C T ) − 1 x ^ k = x ^ k − 1 + K k ( y k − C x ^ k − 1 ) P k = ( I − K k C ) P k − 1 ( I − K k C ) T + K k R K k T \begin{matrix} {\bm K}_k={\bm P}_{k-1}{\bm C}^{\rm T}(\bm R+{\bm C}{\bm P}_{k-1}{\bm C}^{\rm T})^{-1} \\ \hat{\bm x}_k=\hat{\bm x}_{k-1}+{\bm K}_k(\bm y_k-{\bm C}\hat{x}_{k-1}) \\ {\bm P}_k=(\bm I-\bm K_k\bm C){\bm P}_{k-1}(\bm I-\bm K_k\bm C)^{\rm T}+{\bm K}_k{\bm R}{\bm K}_k^{\rm T} \end{matrix} Kk=Pk1CT(R+CPk1CT)1x^k=x^k1+Kk(ykCx^k1)Pk=(IKkC)Pk1(IKkC)T+KkRKkT
  • k = 2 , 3 , . . . k=2,3,... k=2,3,...时估计器重复执行步骤, 估计值 x ^ k \hat{\bm x}_k x^k将不断逼近真实状态 x \bm x x

5.3.状态向量和协方差随时间变化

  • 在离散状态空间模型增加过程噪声 w w w: x k = A x k − 1 + B u k − 1 + w k − 1 {\bm x}_k={\bm A\bm x}_{k-1}+{\bm B\bm u}_{k-1}+{\bm w}_{k-1} xk=Axk1+Buk1+wk1
    • 过程噪声期望为0: P k = E ( ω k ω k T ) = [ ( x k − x k ‾ ) ( x k − x k ‾ ) T ] = A x ‾ k − 1 + B u k − 1 {\bm P_k}=E(\bm \omega_k\bm\omega_k^{\rm T})=[(\bm x_k-\overline{\bm x_k})(\bm x_k-\overline{\bm x_k})^{\rm T}]={\bm A}\overline{\bm x}_{k-1}+{\bm B}{\bm u}_{k-1} Pk=E(ωkωkT)=[(xkxk)(xkxk)T]=Axk1+Buk1
  • P k = A P k − 1 A T + Q \bm P_k=\bm A\bm P_{k-1}\bm A^{\rm T}+\bm Q Pk=APk1AT+Q
    • 当前时刻 k k k的状态向量协方差 P k \bm P_k Pk P k − 1 \bm P_{k-1} Pk1及过程噪声协方差 Q \bm Q Q有关.
      • Q \bm Q Q只和系统有关, 与时间无关

6.离散卡尔曼滤波器

  • 已知白噪声的协方差矩阵 Q R \bm Q\bm R QR和各个时刻测量值的条件 y \bm y y, 估计系统在当前k时刻最优状态向量
    • { x k = A x k − 1 + B u k − 1 + w k − 1 y k = C x k + v k \left\{\begin{matrix} {\bm x}_k={\bm A}{\bm x}_{k-1}+{\bm B}{\bm u}_{k-1}+{\bm w}_{k-1} \\ {\bm y}_k={\bm C\bm x}_k+{\bm v}_k \end{matrix}\right. {xk=Axk1+Buk1+wk1yk=Cxk+vk
      • 过程噪声 w \bm w w和测量噪声 v \bm v v都是零均值且不相关的白噪声 w ∼ ( 0 , Q ) , v ∼ ( 0 , R ) {\bm w}\sim(0,\bm Q), {\bm v}\sim(0,\bm R) w(0,Q),v(0,R)
  • 先验估计 x ^ k − \hat{\bm x}_{k}^{-} x^k: 只用 1 → ( k − 1 ) 1\rightarrow(k-1) 1(k1) 的测量值 y \bm y y估计 x k \bm x_k xk
    • x ^ k − = E { x k ∣ y 1 , y 2 , … , y k − 1 } \hat{\bm x}_{k}^{-}=E\{\bm x_k | \bm y_1,\bm y_2,\dots,\bm y_{k-1}\} x^k=E{xky1,y2,,yk1}
    • 先验协方差 P k − = E [ ( x k − x ^ k − ) ( x k − x ^ k − ) ] \bm P_k^{-}=E[({\bm x}_k-\hat{\bm x}_k^{-})(\bm x_k-\hat{\bm x}_k^{-})] Pk=E[(xkx^k)(xkx^k)]
  • 后验估计 x ^ k + \hat{\bm x}_{k}^{+} x^k+: 用 1 → ( k ) 1\rightarrow(k) 1(k) 的测量值 y \bm y y估计 x k \bm x_k xk
    • x ^ k + = E { x k ∣ y 1 , y 2 , … , y k − 1 , y k } \hat{\bm x}_{k}^{+}=E\{\bm x_k | \bm y_1,\bm y_2,\dots,\bm y_{k-1},\bm y_{k}\} x^k+=E{xky1,y2,,yk1,yk}
    • 后验协方差 P k + = E [ ( x k − x ^ k + ) ( x k − x ^ k + ) ] \bm P_k^{+}=E[({\bm x}_k-\hat{\bm x}_k^{+})(\bm x_k-\hat{\bm x}_k^{+})] Pk+=E[(xkx^k+)(xkx^k+)]

利用的测量值越多, 估计精度越高, 后验估计比先验估计更接近状态向量的真实值, 后验协方差<先验协方差

  • 卡尔曼滤波器
    • x ^ k − 1 + \hat{\bm x}_{k-1}^{+} x^k1+ x ^ k − \hat{\bm x}_{k}^{-} x^k, 时间前进一步, 但无新观测值, 均为 1 → ( k − 1 ) 1\rightarrow(k-1) 1(k1)的观测值
      • { x ^ k − = A x ^ k − 1 + + B u k − 1 P k − = A P k − 1 + A T + Q \left\{\begin{matrix} \hat{\bm x}_k^-=\bm A\hat{\bm x}_{k-1}^++{\bm B}{\bm u}_{k-1} \\ {\bm P}_k^-={\bm A}{\bm P}_{k-1}^+{\bm A}^{\rm T}+{\bm Q} \end{matrix}\right. {x^k=Ax^k1++Buk1Pk=APk1+AT+Q 以上一时刻后验计算当前时刻先验
    • 得到新观测值后可以计算当前时刻后验
      • { K k = P k − C T ( R + C P k − C T ) − 1 x ^ k + = x ^ k − + K k ( y k − C x ^ k − ) P k + = ( I − K k C ) P k − ( I − K k C ) T + K k R K k T \left\{\begin{matrix} {\bm K}_k={\bm P}_{k}^{-}{\bm C}^{\rm T}(\bm R+{\bm C}{\bm P}_{k}^{-}{\bm C}^{\rm T})^{-1} \\ \hat{\bm x}_k^{+}=\hat{\bm x}_{k}^{-}+{\bm K}_k(\bm y_k-{\bm C}\hat{x}_{k}^{-}) \\ {\bm P}_k^{+}=(\bm I-\bm K_k\bm C){\bm P}_{k}^{-}(\bm I-\bm K_k\bm C)^{\rm T}+{\bm K}_k{\bm R}{\bm K}_k^{\rm T} \end{matrix}\right. Kk=PkCT(R+CPkCT)1x^k+=x^k+Kk(ykCx^k)Pk+=(IKkC)Pk(IKkC)T+KkRKkT
        • K k \bm K_k Kk:卡尔曼滤波增益, x k + ^ \hat{\bm x_k^+} xk+^:后验估计即k时刻最优估计

离散卡尔曼滤波器计算流程

类似最小二乘估计

  • 先给出初始状态最优状态估计值 x ^ 0 + \hat{\bm x}_0^+ x^0+与协方差 P 0 + \bm P_0^+ P0+(由可信度决定)
  • 开始运行到时刻k=1, 先计算先验估计与先验方差
    • { x ^ k − = A x ^ k − 1 + + B u k − 1 P k − = A P k − 1 + A T + Q \left\{\begin{matrix} \hat{\bm x}_k^-=\bm A\hat{\bm x}_{k-1}^++{\bm B}{\bm u}_{k-1} \\ {\bm P}_k^-={\bm A}{\bm P}_{k-1}^+{\bm A}^{\rm T}+{\bm Q} \end{matrix}\right. {x^k=Ax^k1++Buk1Pk=APk1+AT+Q
  • 计算卡尔曼滤波增益
    • K k = P k − C T ( R + C P k − C T ) − 1 {\bm K}_k={\bm P}_{k}^{-}{\bm C}^{\rm T}(\bm R+{\bm C}{\bm P}_{k}^{-}{\bm C}^{\rm T})^{-1} Kk=PkCT(R+CPkCT)1
  • 读取各个传感器测量值带入矩阵得 y k \bm y_k yk, 在计算后验估计和后验协方差
    • { x ^ k + = x ^ k − + K k ( y k − C x ^ k − ) P k + = ( I − K k C ) P k − ( I − K k C ) T + K k R K k T \left\{\begin{matrix} \hat{\bm x}_k^{+}=\hat{\bm x}_{k}^{-}+{\bm K}_k(\bm y_k-{\bm C}\hat{x}_{k}^{-}) \\ {\bm P}_k^{+}=(\bm I-\bm K_k\bm C){\bm P}_{k}^{-}(\bm I-\bm K_k\bm C)^{\rm T}+{\bm K}_k{\bm R}{\bm K}_k^{\rm T} \end{matrix}\right. {x^k+=x^k+Kk(ykCx^k)Pk+=(IKkC)Pk(IKkC)T+KkRKkT
  • k = 2 , 3 , … k=2,3,\dots k=2,3,重复执行步骤

7.测量协方差

  • 离散卡尔曼滤波器中要确定: 过程噪声协方差 Q \bm Q Q, 测量噪声协方差 R \bm R R(每次读取测量值的协方差,较容易确定)
    • 如果要保存大量测量值, 内存不够, 需要一种逐步递推得均值和协方差计算方法

7.1.平均值与协方差得递推公式

  • 均值 x ‾ n = x ‾ n − 1 + x n − x ‾ n − 1 n \overline{\bm x}_n=\overline{\bm x}_{n-1}+\frac{{\bm x}_n-\overline{\bm x}_{n-1}}{n} xn=xn1+nxnxn1
  • 协方差 C n = n − 1 n 2 ( x n − x ‾ n − 1 ) ( x n − x ‾ n − 1 ) T + n − 1 n C n {\bm C_n}=\frac{n-1}{n^2}({\bm x}_n-\overline{\bm x}_{n-1})({\bm x}_n-\overline{\bm x}_{n-1})^{\rm T}+\frac{n-1}{n}{\bm C}_n Cn=n2n1(xnxn1)(xnxn1)T+nn1Cn

7.2.测量四足机器人传感器协方差

  • 静止状态时, 测量噪声 v \bm v v协方差 R \bm R R=测量值 y \bm y y的协方差 C y = 1 n ∑ k = 1 n v k v k T = R \bm C_y=\frac{1}{n}\sum_{k=1}^n{\bm v_k}{\bm v}_k^{\rm T}={\bm R} Cy=n1k=1nvkvkT=R
  • 递推方法求得 R \bm R R C u \bm C_u Cu
  • 过程噪声协方差 Q \bm Q Q包含输入量噪声协方差 C u \bm C_u Cu, 只考虑输入量噪声
    • x k = A x k − 1 + B u k − 1 + w k − 1 = A x k − 1 + B ( u k − 1 + o k − 1 ) = A x k − 1 + B u k − 1 + B o k − 1 \begin{matrix} {\bm x}_k={\bm A}{\bm x}_{k-1}+{\bm B}{\bm u}_{k-1}+{\bm w}_{k-1} \\ ={\bm A}{\bm x}_{k-1}+{\bm B}({\bm u}_{k-1}+{\bm o}_{k-1}) \\ ={\bm A}{\bm x}_{k-1}+{\bm B}{\bm u}_{k-1}+{\bm B}{\bm o}_{k-1} \end{matrix} xk=Axk1+Buk1+wk1=Axk1+B(uk1+ok1)=Axk1+Buk1+Bok1
    • Q u = B C u B T \bm Q_u={\bm B}{\bm C_u}{\bm B}^{\rm T} Qu=BCuBT

8.离散卡尔曼滤波调参

8.1.协方差

  1. 若给过程噪声协方差 Q Q Q, 测量噪声协方差 R R R, 初始最优估计协方差 P 0 + P_0^+ P0+乘相同的系数a, 离散克尔曼滤波器的计算结果不变
    1. 可任意等比例缩放协方差矩阵, 使其处于方便计算的数量级
  2. 离散卡尔曼滤波器包含了一个状态空间模型, 可认为其将自己的状态空间模型估计的状态与测量值估计的状态进行"加权最小二乘估计", 权重为Q,R
    1. Q↓: 不信任状态空间模型, 若精度较差则结果出错
    2. Q↑: R↓, 过度信任测量值, 若测量噪声较大则估计也有大噪声, 状态向量有高频振动
    3. 调试Q:为保证估计结果无太大错误,先给较大的Q, 若产生高频振动则逐渐减小

8.2.腾空&触地

  1. 状态空间模型的足端位置基于足端触地, 腾空时 Q → ∞ Q\rightarrow \infty Q, 触地时缩小 Q Q Q
  2. 可变协方差: 分段函数: σ ( x ) { x w r x < w r 1 w r ≤ x ≤ 1 − w r 1 − x w r x > 1 − w r \sigma (x)\left\{\begin{matrix} \frac{x}{w_r} & x<w_r\\ 1 & w_r\le x\le 1-w_r\\ \frac{1-x}{w_r} & x>1-w_r\end{matrix}\right. σ(x) wrx1wr1xx<wrwrx1wrx>1wr
    1. 在这里插入图片描述
    2. C s t a n c e = [ 1 + ( 1 − σ ) L ] C i n i t C_{stance}=[1+(1-\sigma)L]C_{init} Cstance=[1+(1σ)L]Cinit , C i n i t C_{init} Cinit稳定触地时的噪声协方差矩阵
  3. 腾空时的位置由正运动学算得

ref

<四足机器人控制算法-建模,控制与实践>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/674434.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深入理解WebSocket,让你入门音视频

&#x1f604;作者简介&#xff1a; 小曾同学.com,一个致力于测试开发的博主⛽️&#xff0c;主要职责&#xff1a;测试开发、CI/CD 如果文章知识点有错误的地方&#xff0c;还请大家指正&#xff0c;让我们一起学习&#xff0c;一起进步。&#x1f60a; 座右铭&#xff1a;不想…

Android 使用okhttp监控网络数据

这里使用Okhttp写了一个demo来监听网络请求过程中的一系列数据&#xff0c;包括当前网络类型、请求体、响应体大小&#xff0c;url&#xff0c;请求方式&#xff0c;当然还有本次核心获取域名解析时长&#xff0c;建立连接时长&#xff0c;保持连接时长&#xff0c;请求总时长这…

《C++ Primer》--学习6

IO库 IO类 为了支持使用宽字符的语言&#xff0c;标准库定义了一组类型和对象来操纵 wchar_t 类型的数据。宽字符版本的类型和函数的名字以一个 w 开始。wcin wcout 和 wcerr 是分别对应 cin cout 和 cerr 的宽字符版本对象 IO类型之间的关系 类型 ifstream 和 istringstream…

Vuex 状态管理 —— 核心store

在上一篇当中讲到关于接口请求函数获取数据&#xff0c;拿到 response.data &#xff0c;简化调用&#xff0c;那么在拿到请求的响应数据之后呢&#xff1f;在前面讲到组件间的通信当中&#xff0c;如父子通信(父传子props,子传父$emit)以及组件与组件之前不能通过直接通信&…

【33】用 Docker 部署 Prometheus + Grafana 监控平台

一. Docker部署Prometheus 1.1 下载prom/prometheus镜像 docker pull prom/prometheus 1.2 启动prometheus容器 docker run -itd --nameprometheus -p 9090:9090 prom/prometheus 打开本地http://localhost:9090/ 说明启动成功 1.3 将容器的配置文件复制出来 docker cp pr…

深入理解深度学习——GPT(Generative Pre-Trained Transformer):在不同任务中使用GPT

分类目录&#xff1a;《自然语言处理从入门到应用》总目录 GPT预训练语言模型作为一个标准的语言模型&#xff0c;其输入和输出是固定的&#xff0c;即输入一个词序列&#xff0c;输出该词序列的下一个词。《深入理解深度学习——GPT&#xff08;Generative Pre-Trained Transf…

GAMES101 笔记 Lecture06 Rasterization2(Antialiasing and Z-Buffering)

目录 Antialiasing(反走样)Sampling is Ubiquitous in Computer Graphics(采样在计算机图形学中无处不在)Sampling Artifacts(Errors or Mistakes or Inaccuracies) in Computer Graphics(在计算机图形学中采样的瑕疵)Jaggies(Staircase Pattern)锯齿Moire Pattern in Imaging(…

[进阶]TCP通信实现BS架构,网站开发的原理,线程池优化BS架构

代码演示如下&#xff1a; 服务端 public class Server {public static void main(String[] args) throws Exception{System.out.println("服务端开启&#xff01;");//1.创建ServerSocket的对象&#xff0c;同时为服务端注册端口。ServerSocket serverSocket new…

Wang tile(王浩瓷砖)算法解决贴图平铺重复问题

Wang tile(王浩瓷砖) 大家好&#xff0c;我是阿赵。这次来解决一个贴图重复的问题。 一、问题 做一篇很大面积的草地&#xff0c;一般思路是建立一个地面的面片&#xff0c;然后在材质球里面给他做一个Tiling平铺&#xff0c;增大重复次数。这样整个地面都可以被草地的贴图铺满…

Spring Boot 如何使用 @Validated 注解进行数据校验

Spring Boot 如何使用 Validated 注解进行数据校验 在开发应用程序时&#xff0c;数据校验通常是不可避免的。Spring Boot 提供了许多选项来验证应用程序中的数据&#xff0c;其中一个选项是使用 Validated 注解。本文将介绍如何使用 Validated 注解进行数据校验&#xff0c;并…

操作系统-操作系统结构

✅作者简介&#xff1a;人工智能专业本科在读&#xff0c;喜欢计算机与编程&#xff0c;写博客记录自己的学习历程。 &#x1f34e;个人主页&#xff1a;小嗷犬的个人主页 &#x1f34a;个人网站&#xff1a;小嗷犬的技术小站 &#x1f96d;个人信条&#xff1a;为天地立心&…

【计算机组成原理】Yy-z02硬布线模型机设计

目录 一、Yy-z02模型机的系统结构 二、Yy-z02模型机的数据通路 三、Yy-z02模型机的指令执行 四、Yy-z02模型机的硬布线控制器 一、Yy-z02模型机的系统结构 指令系统的实现 <--- 构造它的硬件系统 硬件系统构造过程&#xff1a; 分析指令格式和各指令的功能确定部件连…

《机器学习公式推导与代码实现》chapter16-集成学习对比与调参

《机器学习公式推导与代码实现》学习笔记&#xff0c;记录一下自己的学习过程&#xff0c;详细的内容请大家购买作者的书籍查阅。 集成学习&#xff1a;对比与调参 虽然现在深度学习大行其道&#xff0c;但以XGBoost、LightGBM、CatBoost为代表的Boosting算法仍有其广泛的用武…

【Applied Algebra】有限状态机和模型检测初探

【Applied Algebra】有限状态机和模型检测初探 摘要:有限状态机(FSM)和模型检测有密切的联系。有限状态机提供了一种用状态转换图来表示系统行为的简单方法。而模型检测是一种针对形式化模型&#xff08;例如有限状态机&#xff09;的验证技术&#xff0c;旨在自动验证模型是否…

css基础(一)

目录 思维导图 ​一、css简介 1.1 css语法规范 1.2 css代码规格 1. 样式格式书写 2. 样式大小写 3. 空格规范 二、css选择器 2.1 CSS 选择器的作用 2.2 选择器分类 2.3 标签选择器 2.4 类选择器 2.4 类选择器-多类名 2.5 id 选择器 2.6 通配符选择器 2.7 基础选择器总结 三、CS…

D. Running Miles(公式转换)

Problem - D - Codeforces 有一条长为n的街道&#xff0c;其中第i个景点距离街道起点i英里。第i个景点的美丽值为bi。你想要在离街道起点l英里和r英里处开始和结束慢跑。当你跑步时&#xff0c;你会看到你经过的景点&#xff08;包括起点和终点处的景点&#xff09;。你对沿途慢…

Microsoft365有用吗?2023最新版office有哪些新功能?

office自97版到现在已有20多年&#xff0c;一直是作为行业标准&#xff0c;格式和兼容性好&#xff0c;比较正式&#xff0c;适合商务使用。包含多个组件&#xff0c;除了常用的word、excel、ppt外&#xff0c;还有收发邮件的outlook、管理数据库的access、排版桌面的publisher…

CENTOS上的网络安全工具(二十五)SPARK+NetSA Security Tools容器化部署(1)

一、第三代YAF YAF&#xff08;Yet Another Flowmeter&#xff09;是作为CERT NetSA安全工具套件的传感器部分存在的&#xff0c;支持输入实时数据流和PCAP文件&#xff0c;解析并输出流数据&#xff0c;或针对特定协议的深包检测元数据。目前&#xff0c;YAF在整个系统的作用如…

【js30天挑战】第三天:css变量

效果图&#xff1a; 学到的东西 HTML&CSS部分 css变量写法 //定义:root{ //:root 是 CSS 选择器&#xff0c;它匹配文档的根元素&#xff0c;也就是 html 元素。 --base:#FF0081;--spacing:10px;--blur:0px;} //使用img {filter: blur(var(--blur));}input: range类型…

Redis - 数据结构类型及使用场景详解(一)

一. 简介 Redis 是由 Salvatore Sanfilippo 编写的一个key-value存储系统&#xff0c;是跨平台的非关系型数据库。Redis是一个开源的&#xff0c;使用C语言编写的&#xff0c;遵守BSD协议&#xff0c;支持网络&#xff0c;可基于内存&#xff0c;分布式&#xff0c;可选持久性的…