文章目录

  • MIT Cheetah Learning (一):State Estimate
    • Summary
    • 先验知识
      • A.Extended Kalman Filter
      • B.四元数、旋转矩阵、李群李代数等
    • Part 1——Sensor Device and Measurement Models
      • A. Encoders
      • B. IMU
    • Part 2——State Estimate
      • A.Filter State Definition
      • B.Prediction Model(IMU)
      • C.Measurement Model(Encoders)
      • D.Extended Kalman Filter
    • Part 3——Observability Analysis
      • A.Nonlinear Model
      • B.Extended Kalman Filter
    • Part 4——Conclusion
      • A.实验结论
      • B.后续

MIT Cheetah Learning (一):State Estimate

MIT Cheetah 3中融合了许多论文中的算法和技术。
论文链接:MIT Cheetah 3: Design and Control of a Robust, Dynamic Quadruped Robot
MIT Cheetah Learning系列将解析Cheetah的算法部分,尝试将其中每一个模块解释清楚。

Cheetah 3 中的State Estimate是参考2013年ETH的论文——
“State Estimation for Legged Robots - Consistent Fusion of Leg Kinematics and IMU”
论文链接:State Estimation for Legged Robots - Consistent Fusion of Leg Kinematics and IMU

因此,只需搞明白ETH的论文即可。
下面将具体介绍论文是如何用IMU与编码器实现State Estimate

Summary

以Extended Kalman Filter(EKF)算法为核心,仅使用IMU与电机的编码器,可以准确估计除了yaw和absolute position以外的机器人状态(yaw和absolute position在短距离运动中误差也仅在10%),包括roll、pitch、velocity。
在任意步态、任意地形下,都可以实现对机器人的状态估计。前提是机器人至少有一条腿与地面接触,并且假设机器人与地面接触时,仅会发生非常小的的滑动。

先验知识

A.Extended Kalman Filter

Definition:
θ k \theta_k θk​为真实值, θ k ′ \theta'_k θk′​为模型预测值, ⟨ θ k ⟩ \langle \theta_k \rangle ⟨θk​⟩为估计值(系统输出), z k z_k zk​为系统观测值, s k s_k sk​为状态转移噪声,服从高斯分布, v k v_k vk​为观测噪声,也服从高斯分布

EKF的状态转移方程和观测方程如下:
{ θ k = f ( θ k − 1 ) + s k ( 1 ) z k = h ( θ k ) + v k ( 2 ) \left\{ \begin{array}{ll} \theta_k = f(\theta_{k-1})+s_k & (1)\\ z_k = h(\theta_{k}) + v_k & (2) \end{array}\right. {θk​=f(θk−1​)+sk​zk​=h(θk​)+vk​​(1)(2)​
对(1)(2)式进行泰勒展开(雅克比矩阵性质: f ( x ) = f ( x 0 ) + J ⋅ ( x − x 0 ) f(x) = f(x_0)+J \cdot(x-x_0) f(x)=f(x0​)+J⋅(x−x0​)),得到
{ θ k = f ( θ k − 1 ) + s k = f ( ⟨ θ k − 1 ⟩ ) + F k − 1 ( θ k − 1 − ⟨ θ k − 1 ⟩ ) + s k ( 3 ) z k = h ( θ k ) + v k = h ( θ k ′ ) + H ( θ − θ k ′ ) + v k ( 4 ) \left\{ \begin{array}{ll} \theta_k = f(\theta_{k-1})+s_k = f(\langle \theta_{k-1} \rangle)+F_{k-1}(\theta_{k-1}-\langle \theta_{k-1} \rangle)+s_k & (3)\\ z_k = h(\theta_{k}) + v_k = h(\theta'_k) + H(\theta-\theta'_k) +v_k& (4) \end{array}\right. {θk​=f(θk−1​)+sk​=f(⟨θk−1​⟩)+Fk−1​(θk−1​−⟨θk−1​⟩)+sk​zk​=h(θk​)+vk​=h(θk′​)+H(θ−θk′​)+vk​​(3)(4)​
引入反馈
⟨ θ k ⟩ = θ k ′ + K k ( z k − h ( θ k ′ ) ) \langle \theta_{k} \rangle = \theta'_k+K_k(z_k-h(\theta'_k)) ⟨θk​⟩=θk′​+Kk​(zk​−h(θk′​))
由以上式子可以得到EKF的Predict和Update部分
Predict:
{ θ k ′ = f ( ⟨ θ k − 1 ⟩ ) Σ k ′ = F k − 1 Σ k − 1 ′ F k − 1 T + Q \left\{ \begin{array}{ll} \theta'_k = f(\langle \theta_{k-1} \rangle)\\ \Sigma'_k = F_{k-1} \Sigma'_{k-1} F_{k-1}^T + Q \end{array}\right. {θk′​=f(⟨θk−1​⟩)Σk′​=Fk−1​Σk−1′​Fk−1T​+Q​
Update:
{ S k = ( H k Σ k ′ H k T + R ) − 1 K k = Σ k ′ H k T S k ⟨ θ k ⟩ = θ k ′ + K k ( z k − h ( θ k ′ ) ) Σ k = ( I − K k H k ) Σ k ′ \left\{ \begin{array}{ll} S_k = (H_{k} \Sigma'_{k} H_{k}^T+R)^{-1}\\ K_k = \Sigma'_k H^T_{k} S_k \\ \langle \theta_{k} \rangle = \theta'_k+K_k(z_k-h(\theta'_k)) \\ \Sigma_k = (I-K_k H_k)\Sigma'_k \end{array}\right. ⎩⎪⎪⎨⎪⎪⎧​Sk​=(Hk​Σk′​HkT​+R)−1Kk​=Σk′​HkT​Sk​⟨θk​⟩=θk′​+Kk​(zk​−h(θk′​))Σk​=(I−Kk​Hk​)Σk′​​

其中,雅克比矩阵 F k = ∂ f ∂ θ ∣ ⟨ θ k − 1 ⟩ F_k = \frac{\partial f}{\partial \theta}|_{\langle \theta_{k-1} \rangle} Fk​=∂θ∂f​∣⟨θk−1​⟩​

雅克比矩阵 H k = ∂ h ∂ θ ∣ θ k ′ H_k = \frac{\partial h}{\partial \theta}|_{\theta'_k} Hk​=∂θ∂h​∣θk′​​

协方差矩阵 Σ k = ⟨ ( θ k − ⟨ θ k ⟩ ) ( θ k − ⟨ θ k ⟩ ) T ⟩ \Sigma_k = \langle (\theta_k-\langle \theta_k \rangle)(\theta_k-\langle \theta_k \rangle)^T \rangle Σk​=⟨(θk​−⟨θk​⟩)(θk​−⟨θk​⟩)T⟩,表示估计值与真实值之间的误差

协方差矩阵 Σ k ′ = ⟨ ( θ k − θ k ′ ) ( θ k − θ k ′ ) T ⟩ \Sigma'_k = \langle (\theta_k-\theta'_k) (\theta_k-\theta'_k)^T \rangle Σk′​=⟨(θk​−θk′​)(θk​−θk′​)T⟩,表示预测值与真实值之间的误差

状态转移噪声协方差矩阵 Q = ⟨ s k s k T ⟩ Q = \langle s_k s_k^T\rangle Q=⟨sk​skT​⟩

观测噪声协方差矩阵 R = ⟨ v k v k T ⟩ R = \langle v_k v_k^T\rangle R=⟨vk​vkT​⟩

K k K_k Kk​为卡尔曼增益

具体推导可参考扩展卡尔曼滤波

B.四元数、旋转矩阵、李群李代数等

参考书籍:《视觉SLAM十四讲(第二版)》—— 高翔著

以下定义会在后续会使用到:

  • ( ⋅ ) × (\cdot)^{\times} (⋅)×表示将向量转化成反对称矩阵
  • Ω ( ⋅ ) \Omega(\cdot) Ω(⋅)将任意的角速度转化为4 × 4 {\times}4 ×4矩阵,表示相应的四元速率
    Ω : ω ↦ Ω ( ω ) = [ 0 ω z − ω y ω x − ω z 0 ω x ω y ω y − ω x 0 ω z − ω x − ω y − ω z 0 ] \Omega : \omega \mapsto \Omega(\omega) = \begin{bmatrix} 0 & \omega_z & -\omega_y & \omega_x\\ -\omega_z & 0 & \omega_x & \omega_y \\ \omega_y & -\omega_x & 0 & \omega_z \\ -\omega_x & -\omega_y & -\omega_z & 0 \end{bmatrix} Ω:ω↦Ω(ω)=⎣⎢⎢⎡​0−ωz​ωy​−ωx​​ωz​0−ωx​−ωy​​−ωy​ωx​0−ωz​​ωx​ωy​ωz​0​⎦⎥⎥⎤​
  • ζ ( ⋅ ) \zeta(\cdot) ζ(⋅) 将旋转向量的误差转化为四元数误差
    ζ : v ↦ ζ ( v ) = [ s i n ( 1 2 ∣ ∣ v ∣ ∣ ) v ∣ ∣ v ∣ ∣ c o s ( 1 2 ∣ ∣ v ∣ ∣ ) ] \zeta : v \mapsto \zeta(v) = \begin{bmatrix} sin(\frac{1}{2}||v||)\frac{v}{||v||} \\ cos(\frac{1}{2}||v||) \end{bmatrix} ζ:v↦ζ(v)=[sin(21​∣∣v∣∣)∣∣v∣∣v​cos(21​∣∣v∣∣)​]

Part 1——Sensor Device and Measurement Models

A. Encoders

增量式编码器提供了所有电机的转动真实角度 α \alpha α,该反馈信息受到 n α n_{\alpha} nα​高斯噪声的影响
α ~ = α + n α \tilde{\alpha} = \alpha + n_{\alpha} α~=α+nα​
因此由正运动学可知所有足端在 B o d y F r a m e Body Frame BodyFrame( B B B)下的坐标 s i s_i si​
s i = l k i n i ( α ) + n s , i s_i = lkin_i(\alpha) + n_{s,i} si​=lkini​(α)+ns,i​
l k i n i ( ⋅ ) lkin_i(\cdot) lkini​(⋅)表示腿部正运动学模型, n s , i n_{s, i} ns,i​表示离散高斯噪声(校准误差与运动学模型误差)
定义—— R α R_{\alpha} Rα​为 n α n_{\alpha} nα​的协方差矩阵, R s R_s Rs​为 n i , s n_{i,s} ni,s​的协方差矩阵

B. IMU

由Part 1中IMU模型可知

加速度计得到在 B B B下的加速度 f f f,陀螺仪得到在 B B B下的角速度 ω \omega ω

旋转矩阵 C C C表示从世界坐标系 I I I到机器人坐标系 B B B变换

a a a表示 I I I下的加速度

因此可得
f = C ( a − g ) f = C(a-g) f=C(a−g) f ~ = f + b f + w f \tilde{f} = f+b_f+w_f f~​=f+bf​+wf​ b ˙ f = ω b f \dot b_f = \omega_{bf} b˙f​=ωbf​ ω ~ = ω + b ω + w ω \tilde{\omega} = \omega+b_{\omega}+w_{\omega} ω~=ω+bω​+wω​ b ˙ ω = ω b ω \dot b_{\omega} = \omega_{b\omega} b˙ω​=ωbω​
其中 f ~ , ω ~ \tilde{f},\tilde{\omega} f~​,ω~是受高斯噪声项 ω f , w ω \omega_{f},w_{\omega} ωf​,wω​和偏置项 b f , b ω b_f,b_{\omega} bf​,bω​影响得到的测量值,且偏置项的导数可以由高斯噪声 ω b f , ω b ω \omega_{bf},\omega_{b\omega} ωbf​,ωbω​表示

定义以上四个高斯噪声的协方差矩阵为 Q f , Q b f , Q ω , Q b ω Q_f, Q_{bf},Q_{\omega},Q_{b\omega} Qf​,Qbf​,Qω​,Qbω​

Part 2——State Estimate

A.Filter State Definition

Definition:
r r r为在世界坐标系 I I I下,机器人身体中心的位置

v v v为机器人在世界坐标系 I I I下的速度

q q q为世界坐标系 I I I到机器人坐标系 B B B的旋转四元数

p 1 , p 2 , . . . , p N p_1, p_2, ..., p_N p1​,p2​,...,pN​为机器人足端在世界坐标系 I I I下的位置

b f , b ω b_f, b_{\omega} bf​,bω​为在机器人坐标系 B B B下,IMU的偏置项(可由旋转矩阵转化到世界坐标系 I I I下)

因此我们定义
x : = ( r , v , q , p 1 , . . . , p N , b f , b ω ) x:= (r, v, q, p_1, ..., p_N, b_f, b_{\omega}) x:=(r,v,q,p1​,...,pN​,bf​,bω​) P : = c o v ( Δ x ) P:= cov(\Delta x) P:=cov(Δx) Δ x : = ( Δ r , Δ v , Δ q , Δ p 1 , . . . , Δ p N , Δ b f , Δ b ω ) \Delta x := (\Delta r, \Delta v, \Delta q, \Delta p_1, ..., \Delta p_N, \Delta b_f, \Delta b_{\omega}) Δx:=(Δr,Δv,Δq,Δp1​,...,ΔpN​,Δbf​,Δbω​)

B.Prediction Model(IMU)

由Part 1中IMU模型可知
r ˙ = v v ˙ = a = C T ( f ~ − b f − ω f ) + g q ˙ = 1 2 Ω ( ω ) q = 1 2 Ω ( ω ~ − b ω − ω ω ) q p i ˙ = C T ω p , i , ∀ i ∈ 1 , . . . , N b f ˙ = ω b f b ω ˙ = ω b ω \begin{aligned} &\dot{r} = v \\ & \dot{v}=a=C^T(\tilde{f}-b_f-\omega_f)+g \\ &\dot{q} = \frac{1}{2}\Omega(\omega) q = \frac{1}{2}\Omega(\tilde{\omega}-b_{\omega}-\omega_{\omega})q \\ & \dot{p_i} = C^T\omega_{p,i},\forall i \in {1, ..., N} \\ & \dot{b_f} = \omega_{bf} \\ & \dot{b_\omega} = \omega_{b\omega} \end{aligned} ​r˙=vv˙=a=CT(f~​−bf​−ωf​)+gq˙​=21​Ω(ω)q=21​Ω(ω~−bω​−ωω​)qpi​˙​=CTωp,i​,∀i∈1,...,Nbf​˙​=ωbf​bω​˙​=ωbω​​
白噪声 ω p , i \omega_{p,i} ωp,i​表示足端与地面接触可能产生的微小滑动

Q p , i Q_{p,i} Qp,i​为 ω p , i \omega_{p,i} ωp,i​的协方差矩阵,定义如下:
Q p , i : = [ ω p , i , x 0 0 0 ω p , i , y 0 0 0 ω p , i , z ] Q_{p,i} : = \begin{bmatrix} \omega_{p,i,x} & 0 & 0 \\ 0 & \omega_{p,i,y} & 0 \\ 0 & 0 & \omega_{p,i,z} \end{bmatrix} Qp,i​:=⎣⎡​ωp,i,x​00​0ωp,i,y​0​00ωp,i,z​​⎦⎤​

C.Measurement Model(Encoders)

由Part 1中Encoders模型可知
s i ~ : = l k i n i ( α ~ ) ≈ l k i n i ( α ) + J l k i n , i n α ≈ s i − n s , i + J l k i n , i n α ⏟ n i \tilde{s_i}:=lkin_i(\tilde{\alpha}) \\ \approx lkin_i(\alpha)+J_{lkin,i}n_{\alpha} \\ \approx s_i \underbrace{- n_{s,i}+J_{lkin,i}n_{\alpha}}_{n_{i}} si​~​:=lkini​(α~)≈lkini​(α)+Jlkin,i​nα​≈si​ni​ −ns,i​+Jlkin,i​nα​​​
其中,雅克比矩阵 J l k i n , i : = ∂ l k i n i ( α ) ∂ α i J_{lkin,i}:=\frac{\partial lkin_i(\alpha)}{\partial \alpha_i} Jlkin,i​:=∂αi​∂lkini​(α)​
n i n_{i} ni​可视为经过线性离散化的噪声,包含编码器噪声和正运动学计算噪声,即观测误差
R i R_i Ri​是每一条腿的观测误差协方差矩阵,同时由Part 1.A可知
R i = R s + J l k i n , i R α J l k i n , i T R_i = R_s+J_{lkin,i}R_{\alpha}J_{lkin,i}^T Ri​=Rs​+Jlkin,i​Rα​Jlkin,iT​

由定义可知, s i ~ \tilde{s_i} si​~​可以表示 s i ~ = C ( p i − r ) + n i \tilde{s_i} = C(p_i-r)+n_i si​~​=C(pi​−r)+ni​,即足端坐标与机器人中心坐标(世界坐标系 I I I)的差值乘上旋转矩阵

D.Extended Kalman Filter

将编码器视为观测值, Δ x \Delta x Δx视为真实值,即可建立EKF状态转移方程与观测方程,如下
{ Δ x k = f ( Δ x k − 1 ) + q k s k = h ( Δ x k ) + v k \left\{ \begin{array}{ll} \Delta x_k = f(\Delta x_{k-1})+q_k \\ s_k = h(\Delta x_{k}) + v_k \end{array}\right. {Δxk​=f(Δxk−1​)+qk​sk​=h(Δxk​)+vk​​
Predict:
经过模型线性化处理之后(参考文章Computing integrals involving the matrix exponential),得到关于 Δ x \Delta x Δx的协方差矩阵 F k F_k Fk​,以及离散过程噪声的协方差矩阵 Q k Q_k Qk​( Q k Q_k Qk​包含了 Q f , Q b f , Q ω , Q b ω Q_f, Q_{bf},Q_{\omega},Q_{b\omega} Qf​,Qbf​,Qω​,Qbω​)
两个协方差矩阵 F k , Q k F_k,Q_k Fk​,Qk​的具体表达式在论文中由展示,在这里便不展示了(会涉及反对称阵,四元数,e指数,罗德里格斯公式等)
因此可以得到
{ Δ ′ x = f ( ⟨ Δ x k − 1 ⟩ ) P k + 1 − = F k P k + F k T + Q k \left\{ \begin{array}{ll} \Delta' x = f(\langle \Delta x_{k-1} \rangle)\\ P^-_{k+1} = F_k P^+_k F_k^T + Q_k \end{array}\right. {Δ′x=f(⟨Δxk−1​⟩)Pk+1−​=Fk​Pk+​FkT​+Qk​​

Update:
引入 y k y_k yk​,定义如下:
y k : = ( ( s ~ 1 , k − C ^ k − ( p ^ 1 , k − − r ^ k − ) ⋮ ( s ~ N , k − C ^ k − ( p ^ N , k − − r ^ k − ) ) y_k : = \left(\begin{array}{l} (\tilde{s}_{1,k}-\hat{C}^-_k(\hat{p}^-_{1,k}-\hat{r}^-_k) \\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \vdots \\ (\tilde{s}_{N,k}-\hat{C}^-_k(\hat{p}^-_{N,k}-\hat{r}^-_k) \end{array} \right) yk​:=⎝⎜⎛​(s~1,k​−C^k−​(p^​1,k−​−r^k−​)                  ⋮(s~N,k​−C^k−​(p^​N,k−​−r^k−​)​⎠⎟⎞​
关于式子 s ~ i , k − C ^ k − ( p ^ i , k − − r ^ k − ) \tilde{s}_{i,k}-\hat{C}^-_k(\hat{p}^-_{i,k}-\hat{r}^-_k) s~i,k​−C^k−​(p^​i,k−​−r^k−​),使用泰勒展开,忽略所有的高阶项,得到
s ~ i , k − C ^ k − ( p ^ i , k − − r ^ k − ) ≈ − C ^ k − Δ r k − + C ^ k − Δ p i , k − + ( C ^ k − ( p ^ i , k − − r ^ k − ) ) × Δ ϕ k − \tilde{s}_{i,k}-\hat{C}^-_k(\hat{p}^-_{i,k}-\hat{r}^-_k) \approx -\hat{C}^-_k \Delta r^-_k+\hat{C}^-_k \Delta p^-_{i,k}+(\hat{C}^-_k(\hat{p}^-_{i,k}-\hat{r}^-_k))^{\times}\Delta \phi^-_k s~i,k​−C^k−​(p^​i,k−​−r^k−​)≈−C^k−​Δrk−​+C^k−​Δpi,k−​+(C^k−​(p^​i,k−​−r^k−​))×Δϕk−​
证明如下:

定义 ∂ g ( x k ) ∂ x k : = s ~ i , k − C ^ k − ( p ^ i , k − − r ^ k − ) \frac{\partial g( x_k)}{\partial x_k} := \tilde{s}_{i,k}-\hat{C}^-_k(\hat{p}^-_{i,k}-\hat{r}^-_k) ∂xk​∂g(xk​)​:=s~i,k​−C^k−​(p^​i,k−​−r^k−​)
∵ ∂ g ( x k ) ∂ x k = − C ^ k − Δ r k − + C ^ k − Δ p i , k − + ( C ^ k − ( p ^ i , k − − r ^ k − ) ) × Δ ϕ k − + G ( Δ v k − ) \because \frac{\partial g( x_k)}{\partial x_k} = -\hat{C}^-_k \Delta r^-_k+\hat{C}^-_k \Delta p^-_{i,k}+(\hat{C}^-_k(\hat{p}^-_{i,k}-\hat{r}^-_k))^{\times}\Delta \phi^-_k+G(\Delta v^-_k) ∵∂xk​∂g(xk​)​=−C^k−​Δrk−​+C^k−​Δpi,k−​+(C^k−​(p^​i,k−​−r^k−​))×Δϕk−​+G(Δvk−​)
= − C ^ k − Δ r k − + C ^ k − Δ p i , k − + ( C ^ k − ( p ^ i , k − − r ^ k − ) ) × Δ ϕ k − =-\hat{C}^-_k \Delta r^-_k+\hat{C}^-_k \Delta p^-_{i,k}+(\hat{C}^-_k(\hat{p}^-_{i,k}-\hat{r}^-_k))^{\times}\Delta \phi^-_k =−C^k−​Δrk−​+C^k−​Δpi,k−​+(C^k−​(p^​i,k−​−r^k−​))×Δϕk−​
G ( Δ v k − ) G(\Delta v^-_k) G(Δvk−​)可视为 − C ^ k − Δ r k − -\hat{C}^-_k \Delta r^-_k −C^k−​Δrk−​的高阶项,因此可以忽略
∴ s ~ i , k − C ^ k − ( p ^ i , k − − r ^ k − ) ≈ − C ^ k − Δ r k − + C ^ k − Δ p i , k − + ( C ^ k − ( p ^ i , k − − r ^ k − ) ) × Δ ϕ k − \therefore \tilde{s}_{i,k}-\hat{C}^-_k(\hat{p}^-_{i,k}-\hat{r}^-_k) \approx -\hat{C}^-_k \Delta r^-_k+\hat{C}^-_k \Delta p^-_{i,k}+(\hat{C}^-_k(\hat{p}^-_{i,k}-\hat{r}^-_k))^{\times}\Delta \phi^-_k ∴s~i,k​−C^k−​(p^​i,k−​−r^k−​)≈−C^k−​Δrk−​+C^k−​Δpi,k−​+(C^k−​(p^​i,k−​−r^k−​))×Δϕk−​
因此我们可以得到雅克比矩阵 H k = ∂ y k ∂ x k H_k = \frac{\partial y_k}{\partial x_k} Hk​=∂xk​∂yk​​
H k = [ − C ^ k − 0 ( C ^ k − ( p ^ 1 , k − − r ^ k − ) ) × C ^ k − ⋯ 0 0 0 ⋮ ⋮ ⋮ ⋮ ⋱ ⋮ ⋮ ⋮ − C ^ k − 0 ( C ^ k − ( p ^ N , k − − r ^ k − ) ) × C ^ k − ⋯ 0 0 0 ] H_k = \begin{bmatrix} -\hat{C}^-_k & 0 & (\hat{C}^-_k(\hat{p}^-_{1,k}-\hat{r}^-_k))^{\times} & \hat{C}^-_k & \cdots& 0 & 0 & 0 \\ \vdots & \vdots & \vdots & \vdots & \ddots & \vdots & \vdots & \vdots \\ -\hat{C}^-_k & 0 & (\hat{C}^-_k(\hat{p}^-_{N,k}-\hat{r}^-_k))^{\times} & \hat{C}^-_k & \cdots& 0 & 0 & 0 \end{bmatrix} Hk​=⎣⎢⎡​−C^k−​⋮−C^k−​​0⋮0​(C^k−​(p^​1,k−​−r^k−​))×⋮(C^k−​(p^​N,k−​−r^k−​))×​C^k−​⋮C^k−​​⋯⋱⋯​0⋮0​0⋮0​0⋮0​⎦⎥⎤​
由Part 2.C可知, R k R_k Rk​是观测误差的协方差矩阵
R k = [ R 1 , k ⋱ R N , k ] R_k = \begin{bmatrix} R_{1,k} & &\\ & \ddots \\ & & R_{N,k} \end{bmatrix} Rk​=⎣⎡​R1,k​​⋱​RN,k​​⎦⎤​
因此我们可以得到EFK的Update等式,如下:
{ S k = ( H k P k − H k T + R k ) K k = P k − H k T S k − 1 ⟨ Δ x k ⟩ = K k y k ( ∗ ) P k + = ( I − K k H k ) P k − \left\{ \begin{array}{ll} S_k = (H_{k} P^-_{k} H_{k}^T+R_k)\\ K_k = P^-_{k} H^T_{k} S^{-1}_k \\ \langle \Delta x_k \rangle = K_k y_k & (*)\\ P^+_{k} = (I-K_k H_k)P^-_k \end{array}\right. ⎩⎪⎪⎨⎪⎪⎧​Sk​=(Hk​Pk−​HkT​+Rk​)Kk​=Pk−​HkT​Sk−1​⟨Δxk​⟩=Kk​yk​Pk+​=(I−Kk​Hk​)Pk−​​(∗)​
( ∗ ) (*) (∗)式证明如下:
⟨ Δ x i , k ⟩ = Δ x i , k ′ + K k ( s ~ i , k − C ^ k − ( p ^ i , k − − r ^ k − ) ) \langle \Delta x_{i,k} \rangle = \Delta x'_{i,k}+K_k(\tilde{s}_{i,k}-\hat{C}^-_k(\hat{p}^-_{i,k}-\hat{r}^-_k)) ⟨Δxi,k​⟩=Δxi,k′​+Kk​(s~i,k​−C^k−​(p^​i,k−​−r^k−​))
由于 Δ x i , k ′ \Delta x'_{i,k} Δxi,k′​与 C ^ k − ( p ^ i , k − − r ^ k − ) \hat{C}^-_k(\hat{p}^-_{i,k}-\hat{r}^-_k) C^k−​(p^​i,k−​−r^k−​)式等价的
∴ ⟨ Δ x i , k ⟩ = K k y k \therefore \langle \Delta x_{i,k} \rangle = K_k y_k ∴⟨Δxi,k​⟩=Kk​yk​

Part 3——Observability Analysis

A.Nonlinear Model

参考文章Nonlinear controllability and observability

该部分从数学的角度证明了对于该机器人系统来说,有以下几个结论:

  • absolute position和yaw是无法被观测的,但是其他的所有状态都可以被准确估计。
  • 对于任意的非线性地形,只要有至少三条腿与地面接触,就可以准确估计机器人状态。
  • 当机器人与地面没有任何接触时,状态无法估计,收敛效果极差

具体证明过程可参考论文本身,数学部分较为复杂,便不一一阐述

B.Extended Kalman Filter

参考文章Analysis and improvement of the consistency of extended Kalman filter based SLAM

参考文章A counter example to the theory of simultaneous localization and map building

该部分从数学的角度证明了对于该机器人系统的EKF模型来说,有以下结论:

  • 对于无法观测的非线性子空间系统,将其线性离散化之后,依然是无法观测的

Part 4——Conclusion

A.实验结论

  • 对于任意地形和任意步态来说,absolute position和yaw是无法观测的,但是在移动短距离的实验中,误差还是能够控制在10%左右,并非无法衡量。
  • roll、pitch和velocity可以准确观测,可以很好的作为机器人的反馈信息。

(这个实验结果太牛了,必须附上)

B.后续

对于Part 3的证明,还有一些问题没有搞清楚,特别是非线性机器人模型的可观测性这个部分。

后面在搭建好四足机器人平台之后,尝试复现State Estimate。

MIT Cheetah Learning (一):State Estimate相关推荐

  1. LEARNING GRAPHICAL STATE TRANSITIONS

    LEARNING GRAPHICAL STATE TRANSITIONS (ICLR 2017) Idea:图结构对于构建多个实体之间的关系是十分重要的,也可以被用于去表示真实世界中的多种数据结构.本 ...

  2. MIT四足机器人MIT Cheetah的硬件框架

    前几天小米的铁蛋,又让四足机器人火了一把.9999一台,这个价钱还挺香的.众所周知,国内的大部分四足机器狗的涌出,都是因为2019年,MIT的猎豹开源,从硬件到软件.国内四足机器人的研发也就上了一个台 ...

  3. 【论文解读--MPC控制】Dynamic Locomotion in the MIT Cheetah 3 Through Convex Model-Predictive Control

    系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 TODO:写完再整理 文章目录 系列文章目录 前言 一.简介 二.控制系统框图 0.定义body坐标系和world坐标系 ...

  4. CAN通信控制TH-02机器狗电机 (仿MIT cheetah mini电机 )

    第一次写CSDN博客还不太熟悉,就先简要说明,后期有时间再丰富内容. 电机刚收到,写一个测试程序跑一下. 通过KEY_0按键发送电机控制指令,每按一次都会发送一条控制指令,电机能够在位置模式和速度模式 ...

  5. MIT cheetah make时 error: ‘ioctl’ was not declared in this scope

    问题: error: 'ioctl' was not declared in this scope35 | ioctl(fd, TCGETS2, &tty); 解决: 打开Cheetah-So ...

  6. 假如时光可以倒流……

    当我白发苍苍,你是否还在我的身旁? 当我白发苍苍,我的子女是否是我期望的模样? 当我白发苍苍,我的身体是否还健壮? 当我白发苍苍,我的生活是否还有保障? 当我白发苍苍,我今生的成就是否在这历史上留下一 ...

  7. 【转载】MIT四足机器人Cheetah 3控制方案笔记

    转载:知乎 Wenboxing https://zhuanlan.zhihu.com/p/190028074 这里写自定义目录标题 MIT四足机器人Cheetah 3控制方案理解笔记(1)--摆动腿控 ...

  8. MIT四足机器人Cheetah 3控制方案理解笔记(2)——Convex Mpc身体姿态控制

    在"MIT四足机器人Cheetah 3控制方案理解笔记(1)"中,主要简单的总结了下一般情况下腿足机器人的摆动腿控制方法以及Cheetah 3的基于集中质量模型的平衡控制器.此外, ...

  9. MIT Mini Cheetah开源四足机器人仿真环境20211130

    Mit Mini Cheetah相关: 1. 实验室官网 MIT Biomimetic Robotics Lab 2.  Mini Cheetah作者硕士论文 A low cost modular a ...

最新文章

  1. python办公自动化excel_简直出神入化,教你用Python控制Excel实现自动化办公
  2. Maven+Struts2+MyBatis+Spring搭建教程
  3. 手把手教你玩转SOCKET模型之重叠I/O篇(下)
  4. sql in 用法(mysql)
  5. Android 优化布局层次结构
  6. 实现mvcc_数据库中的引擎、事务、锁、MVCC(三)
  7. 一文带你由浅入深Netty异步非阻塞世界
  8. 2020年31省市GDP数据可视化
  9. 解决MATLAB帮助文档打不开的情况
  10. JAVA计算机毕业设计新闻推送系统Mybatis+源码+数据库+lw文档+系统+调试部署
  11. 如何打开.pos文件
  12. 祝萍:后疫情时代医美运营要以顾客体验为中心
  13. Python实现文本相似度比较分析
  14. 华南师范大学计算机学院教务,促进教考协调,创新教育形式,服务人才培养 ——计算机学院2016-2017(1)学期期末考试工作纪实...
  15. 一寸光阴一寸金,寸金难买寸光阴、时间就是生命,浪费时间就是慢性自杀。
  16. 活码二维码分流规则使用说明
  17. Ajax.NET中的ajax.js脚本
  18. 【渝粤题库】陕西师范大学164107 电子商务信息安全 作业(高起专)
  19. 为什么电影里黑客几乎不用鼠标?
  20. android无法开启wifi,android机无线网开不了

热门文章

  1. altera 设计--仿真--下载
  2. LQ-Nets: Learned Quantization for Highly Accurate and Compact Deep Neural Networks
  3. 收集一个错误,foxmail发送邮件时报错反馈550 5.7.0 DT:SPM
  4. 医院信息化-4 趋势与技术应用
  5. Ubuntu 18.04 网易云音乐无法打开问题解决方案
  6. c++怎么确定一个整数有几位_德国人怎么学电机——浅谈电机模型(十六):同步电机(三)永磁电机(一)...
  7. Lintcode -378. 将二叉查找树转换成双链表
  8. 联想拯救者R7000P开箱检查测试
  9. 查找读者姓名mysql_练习1.sql · 刘友亮/mysql第三次作业 - Gitee.com
  10. 事关年终奖,备受关注的项目绩效管理攻略来喽