LIPM estimator
LIPM DCM Bias Estimator

LIPM DCM Bias Estimator

1 One dimension: the basics

1.1 Definitions

Symbol Meaning Expression
ξ divergent component of motion (DCM)
z The zero moment point
b the bias that we want to observe
ξb biased DCM ξ + b
Measured z z + wz
ξ̂b Measured ξb ξb + wξ
ω0 Natural frequency of the DCM
T sampling time
wb Brownian motion noise in the bias
wz
measurement noise in  [A]  [A] 
This covariance could be overestimated to take into account the modeling error due to centroidal angular momentum and variations of CoM height
wξ measurement noise in ξ̂b
κb standard deviation of wb
κz standard deviation of wz
κξ standard deviation of wξ
Table 1.1 Variable definition
State Variables Inputs Measurements Standard deviations Parameters
ξ, b ξ̂b κb, κz, κξ ω0, T
Table 1.2 State definion and use of available signals in the Kalman filter

1.2 Dynamics

The dynamics of the DCM is
(1.1) ξ̇  = ω0(ξ − z)
This can be discetized to
(1.2) ξk + 1  = ξk + ω0T(ξk − zk)  = (1 + ω0T)ξk − ω0Tzk  = (1 + ω0T)ξk − ω0T(k − wz)  = (1 + ω0T)ξk − ω0Tk + ω0Twz
And the dynamics of b is
(1.3) bk + 1  = bk + vk
Giving this dynamics
(1.4) ξk + 1 bk + 1  =  1 + ω0T 0 0 1 ξk bk  +   − ω0T 0 k +  ω0Twz vk
This means that the process covariance matrix is of the form
(1.5) Q  =  (ω0Tκz)2 0 0 κ2v
The measurement dynamics model is simply
(1.6) ξ̂bk  = ξk + bk + wξ  = ( 1 1 ) ξk bk  + wξ
Giving this covariance matrix
(1.7) R =  ( (κξ)2 )

1.3 Observability

Let’s analyze the observability
(1.8) O =  ( 1 1 ) ( 1 1 ) 1 + ω0T 0 0 1  =  1 1 1 + ω0T 1
Which is full rank.

1.4 Initializing ξ̂ with measurement

if we initialize ξ̂0 = ξ̂bk − 0 the we have the state
(1.9) ξ̂0 0  =  ξ0 b0  +  b0 − 0 + wξ  − b0 + 0  =  ξ0 b0  +  eb0 + wξ  − eb0
Giving the initial error covariance matrix
(2.1) P0 =  (κξ)2 + (κb0)2  − (κb0)2  − (κb0)2 (κb0)2

2 2D case

This chapter is essentially a copy paste of the pervious one but
  • changing to 2D
  • adding the support for rotations

2.1 Definitions

These are the same except that 2d vectors replace states, inputs and measurements and 2 × 2 matrices replace the standard deviations. parameters remain scalars
Symbol Meaning Expression
ξ divergent component of motion (DCM)
z The zero moment point
b the bias that we want to observe
ξb biased DCM ξ + b
Measured z z + wz
ξ̂b Measured ξb ξb + wξ
ω0 Natural frequency of the DCM
T sampling time
wb Brownian motion noise in the bias
wz
measurement noise in  [B]  [B] 
This covariance could be overestimated to take into account the modeling error due to centroidal angular momentum and variations of CoM height
wξ measurement noise in ξ̂b
κb standard deviation of wb
κz standard deviation of wz
κξ standard deviation of wξ
Table 2.1 Variable definition
State Variables Inputs Measurements Variances Parameters
ξ, b ξ̂b κb, κz, κξ ω0, T
Table 2.2 State definion and use of available signals in the Kalman filter

2.2 Dynamics

The dynamics of the DCM is
(2.2) ξ̇  = ω0(ξ − z)
This can be discetized to
(2.3) ξk + 1  = ξk + ω0T(ξk − zk)  = (1 + ω0T)ξk − ω0Tzk  = (1 + ω0T)ξk − ω0T(zk − wz)  = (1 + ω0T)ξk − ω0Tzk + ω0Twz
And the dynamics of b is
(2.4) bk + 1  = bk + vk
Giving this dynamics
(2.5) ξk + 1 bk + 1  =  (1 + ω0T)I2 × 2 0 0 I2 × 2 ξk bk  +   − ω0TI2 × 2 0 k +  ω0Twz vk
This means that the process covariance matrix is of the form
(2.6) Q  =  (ω0Tκz)(ω0Tκz)T 0 0 κvκTv
The measurement dynamics model is simply
(2.7) ξ̂bk  = ξk + bk + wξ  = ( I2 × 2 I2 × 2 ) ξk bk  + wξ
Giving this covariance matrix
(2.8) R =  ( κξκξT )

2.3 Observability

Let’s analyze the observability
(2.9) O =  ( I2 × 2 I2 × 2 ) ( I2 × 2 I2 × 2 ) (1 + ω0T)I2 × 2 0 0 I2 × 2  =  I2 × 2 I2 × 2 (1 + ω0T)I2 × 2 I2 × 2
Which is full rank.

2.4 Initializing ξ̂ with measurement

if we initialize ξ̂0 = ξ̂bk − 0 the we have the state
(2.10) ξ̂0 0  =  ξ0 b0  +  b0 − 0 + wξ  − b0 + 0  =  ξ0 b0  +  eb0 + wξ  − eb0
Giving the initial error covariance matrix
(2.11) P0 =  κξκξT + κb0κb0T  − κb0κb0T  − κb0κb0T κb0κb0T

2.5 Include rotations

What if the bias is actually linked to the orientation of the base? In other words,
(2.12) bk  = Rkbl, k
where R is the orientation of the robot in 2D amd bl is the local drift. We model the local drift to be constant, i.e.
bl, k + 1  = bl, k + vk
In this case the update is then
(2.13) bk + 1  = Rk + 1RTkbk + Rk + 1RTkvk
By assuming that vk is an isotropic noise we end up with this model
bk + 1  = RkRTk − 1bk + vk
Which gives
(2.14) ξk + 1 bk + 1  =  (1 + ω0T)I2 × 2 0 0 Rk + 1RTk ξk bk  +   − ω0TI2 × 2 0 k +  ω0Twz vk
Note that in this case we consider that the rotation signal R is noiseless.

2.6 Consider CoM offset and ZMP coefficient

What if we can measure in the DCM dynamics an offset on the CoM and a coefficient to the ZMP ? In other words the dynamics of the DCM becomes
(2.15) ξ̇  = ω0(ξ − κz + γ)
wherev α is the CoM offset and \strikeout off\xout off\uuline off\uwave offκ is the ZMP coefficient, they are considered known. This may happen in the presence of planned or measured contact forces (see equation (8) in [1]).
This can be discretized as
(2.16) ξk + 1  = ξk + ω0T(ξk − κzk + γ)
Which gives
(2.17) ξk + 1 bk + 1  =  (1 + ω0T)I2 × 2 0 0 Rk + 1RTk ξk bk  +   − ω0TκI2 × 2 ω0TI2 × 2 0 0 k γ  +  ω0Twz vk
Which is implemented in the code
\strikeout off\xout off\uuline off\uwave off

Bibliography

[1] Masaki Murooka, Kevin Chappellet, Arnaud Tanguy, Mehdi Benallegue, Iori Kumagai, Mitsuharu Morisawa, Fumio Kanehiro, Abderrahmane Kheddar. Humanoid Loco-Manipulations Pattern Generation and Stabilization Control. IEEE Robotics and Automation Letters, 6(3):5597—5604, 2021.

A Unit-testing code

We wish to generate a random trajectory for the dcm but with bounded values. Lets compute a stable desired derivative for the dcm and the corresponding desired zmp
(A.1) ξ̇d  =  − λξ ω0(ξ − zd)  =  − λξ zd  = (λ)/(ω0) + 1ξ