问题定义
运
动
方
程
:
x
k
=
A
k
−
1
x
k
−
1
+
v
k
+
w
k
,
k
=
1
.
.
.
K
\qquad 运动方程:x_k=A_{k-1}x_{k-1}+v_k+w_k,\quad k=1\ .\ .\ .\ K
运动方程:xk=Ak−1xk−1+vk+wk,k=1 . . . K
观
测
方
程
:
y
k
=
C
k
x
k
+
n
k
,
k
=
0
.
.
.
K
\qquad观测方程:y_k=C_kx_k+n_k,\quad k=0\ .\ .\ .\ K
观测方程:yk=Ckxk+nk,k=0 . . . K
其中
k
k
k为时间下标,最大值为
K
K
K。各变量的含义如下
系统状态:
x
k
ϵ
R
n
\qquad \ x_k\ \epsilon \ R^n
xk ϵ Rn
初始状态:
x
0
ϵ
R
n
∼
N
(
x
ˇ
0
,
P
ˇ
0
)
\qquad \ x_0\ \epsilon \ R^n\sim N(\check x_0,\check P_0)
x0 ϵ Rn∼N(xˇ0,Pˇ0)
输⼊:
v
k
ϵ
R
n
\qquad \qquad v_k\ \epsilon \ R^n
vk ϵ Rn
过程噪声:
w
k
ϵ
R
n
∼
N
(
0
,
Q
k
)
\qquad \ w_k\ \epsilon \ R^n\sim N(0,Q_k)
wk ϵ Rn∼N(0,Qk)
测量:
y
k
ϵ
R
m
\qquad \qquad y_k\ \epsilon \ R^m
yk ϵ Rm
测量噪声:
n
k
ϵ
R
m
∼
N
(
0
,
R
k
)
\qquad \ n_k\ \epsilon \ R^m\sim N(0,R_k)
nk ϵ Rm∼N(0,Rk)
状态估计问题是指,在 k k k个(一个或多个)时间点上,基于初始的状态信息 x ˇ 0 \check x_0 xˇ0,一系列观测数据 y 0 : K , m e a s y_{0:K,meas} y0:K,meas,一系列输入 v 1 : K v_{1:K} v1:K,以及系统的运动和观测模型,来计算系统的真实状态的估计值 x ^ k \hat x_k x^k。
最大后验估计(Maximum A Posteriori, MAP)
MAP的目标就是求解以下问题:
x
^
=
arg max
x
p
(
x
∣
v
,
y
)
\hat x=\argmax_x p(x|v,y)
x^=xargmaxp(x∣v,y)
由公式:
p
(
x
,
y
,
v
)
=
p
(
y
∣
x
,
v
)
p
(
x
,
v
)
=
p
(
x
∣
v
,
y
)
p
(
v
∣
y
)
\qquad p(x,y,v)=p(y|x,v)p(x,v)=p(x|v,y)p(v|y)
p(x,y,v)=p(y∣x,v)p(x,v)=p(x∣v,y)p(v∣y)
p
(
x
,
v
)
=
p
(
x
∣
v
)
p
(
v
)
\qquad p(x,v)=p(x|v)p(v)
p(x,v)=p(x∣v)p(v)
p
(
v
,
y
)
=
p
(
y
∣
v
)
p
(
v
)
\qquad p(v,y)=p(y|v)p(v)
p(v,y)=p(y∣v)p(v)
可得出:
x
^
=
arg max
x
p
(
x
∣
v
,
y
)
=
arg max
x
p
(
y
∣
x
,
v
)
p
(
x
∣
v
)
p
(
y
∣
v
)
\hat x=\argmax_x p(x|v,y)=\argmax_x \frac{p(y|x,v)p(x|v)}{p(y|v)}
x^=xargmaxp(x∣v,y)=xargmaxp(y∣v)p(y∣x,v)p(x∣v)
又因为上式分母和
x
x
x无关,可以把分母略去,同时在
x
x
x已知的情况下
p
(
y
∣
x
,
v
)
p(y|x,v)
p(y∣x,v)中的v可以省略。
所以可以得到:
x
^
=
arg max
x
p
(
x
∣
v
,
y
)
=
arg max
x
p
(
y
∣
x
,
v
)
p
(
x
∣
v
)
p
(
y
∣
v
)
=
arg max
x
p
(
y
∣
x
)
p
(
x
∣
v
)
\hat x=\argmax_x p(x|v,y)=\argmax_x \frac{p(y|x,v)p(x|v)}{p(y|v)}=\argmax_x p(y|x)p(x|v)
x^=xargmaxp(x∣v,y)=xargmaxp(y∣v)p(y∣x,v)p(x∣v)=xargmaxp(y∣x)p(x∣v)
假设所有时刻的
w
k
w_k
wk和
n
k
n_k
nk之间是无关的。则有:
p
(
y
∣
x
)
=
∐
k
=
0
K
p
(
y
k
∣
x
k
)
p(y|x) = \coprod_{k=0}^{K}p(y_k|x_k)
p(y∣x)=k=0∐Kp(yk∣xk)
还有:
p
(
x
∣
v
)
=
∐
k
=
1
K
p
(
x
k
∣
x
k
−
1
,
v
k
)
p(x|v) = \coprod_{k=1}^{K}p(x_k|x_{k-1},v_k)
p(x∣v)=k=1∐Kp(xk∣xk−1,vk)
在线性系统中,高斯密度函数可展开为:
p
(
x
0
∣
x
ˇ
0
)
=
1
(
2
π
)
N
d
e
t
P
ˇ
0
×
e
x
p
(
−
1
2
(
x
0
−
x
ˇ
0
)
T
P
ˇ
0
−
1
(
x
0
−
x
ˇ
0
)
)
p(x_0|\check x_0)=\frac{1}{\sqrt {(2\pi)^Ndet\check P_0}}\times exp(-\frac{1}{2}(x_0-\check x_0)^T\check P_0^{-1}(x_0-\check x_0))
p(x0∣xˇ0)=(2π)NdetPˇ01×exp(−21(x0−xˇ0)TPˇ0−1(x0−xˇ0))
p
(
x
k
∣
x
k
−
1
,
v
k
)
=
1
(
2
π
)
N
d
e
t
Q
k
×
e
x
p
(
−
1
2
(
x
k
−
A
k
−
1
x
k
−
1
−
v
k
)
T
Q
k
−
1
(
x
k
−
A
k
−
1
x
k
−
1
−
v
k
)
)
p(x_k|x_{k-1},v_k)=\frac{1}{\sqrt {(2\pi)^NdetQ_k}}\times exp(-\frac{1}{2}(x_k-A_{k-1}x_{k-1}-v_k)^TQ_k^{-1}(x_k-A_{k-1}x_{k-1}-v_k))
p(xk∣xk−1,vk)=(2π)NdetQk1×exp(−21(xk−Ak−1xk−1−vk)TQk−1(xk−Ak−1xk−1−vk))
p
(
y
k
∣
,
x
k
)
=
1
(
2
π
)
M
d
e
t
R
k
×
e
x
p
(
−
1
2
(
y
k
−
C
k
x
k
)
T
R
k
−
1
(
y
k
−
C
k
x
k
)
)
p(y_k|,x_k)=\frac{1}{\sqrt {(2\pi)^MdetR_k}}\times exp(-\frac{1}{2}(y_k-C_kx_k)^TR_k^{-1}(y_k-C_kx_k))
p(yk∣,xk)=(2π)MdetRk1×exp(−21(yk−Ckxk)TRk−1(yk−Ckxk))
对等式两端取对数:
l
n
p
(
y
∣
x
)
p
(
x
∣
v
)
)
=
l
n
p
(
x
0
∣
x
ˇ
0
)
+
∑
k
=
1
K
l
n
p
(
x
k
∣
x
k
−
1
,
v
k
)
+
∑
k
=
0
K
l
n
p
(
y
k
∣
x
k
)
)
ln\ p(y|x)p(x|v))=ln\ p(x_0|\check x_0)+\sum_{k=1}^{K}ln\ p(x_k|x_{k-1},v_k)+\sum_{k=0}^{K}ln\ p(y_k|x_k))
ln p(y∣x)p(x∣v))=ln p(x0∣xˇ0)+k=1∑Kln p(xk∣xk−1,vk)+k=0∑Kln p(yk∣xk))
有:
l
n
p
(
x
0
∣
x
ˇ
0
)
=
−
1
2
(
x
0
−
x
ˇ
0
)
T
P
ˇ
0
−
1
(
x
0
−
x
ˇ
0
)
)
−
1
2
l
n
(
(
2
π
)
N
d
e
t
P
ˇ
0
)
ln\ p(x_0|\check x_0)=-\frac{1}{2}(x_0-\check x_0)^T\check P_0^{-1}(x_0-\check x_0))-\frac{1}{2}ln((2\pi)^Ndet\check P_0)
ln p(x0∣xˇ0)=−21(x0−xˇ0)TPˇ0−1(x0−xˇ0))−21ln((2π)NdetPˇ0)
l
n
p
(
x
k
∣
x
k
−
1
,
v
k
)
=
−
1
2
(
x
k
−
A
k
−
1
x
k
−
1
−
v
k
)
T
Q
k
−
1
(
x
k
−
A
k
−
1
x
k
−
1
−
v
k
)
)
−
1
2
l
n
(
(
2
π
)
N
d
e
t
Q
k
)
ln\ p(x_k|x_{k-1},v_k)=-\frac{1}{2}(x_k-A_{k-1}x_{k-1}-v_k)^TQ_k^{-1}(x_k-A_{k-1}x_{k-1}-v_k))-\frac{1}{2}ln((2\pi)^NdetQ_k)
ln p(xk∣xk−1,vk)=−21(xk−Ak−1xk−1−vk)TQk−1(xk−Ak−1xk−1−vk))−21ln((2π)NdetQk)
l
n
p
(
y
k
∣
,
x
k
)
=
−
1
2
(
y
k
−
C
k
x
k
)
T
R
k
−
1
(
y
k
−
C
k
x
k
)
)
−
1
2
l
n
(
(
2
π
)
M
d
e
t
R
k
)
ln\ p(y_k|,x_k)=-\frac{1}{2}(y_k-C_kx_k)^TR_k^{-1}(y_k-C_kx_k))-\frac{1}{2}ln((2\pi)^MdetR_k)
ln p(yk∣,xk)=−21(yk−Ckxk)TRk−1(yk−Ckxk))−21ln((2π)MdetRk)
上面三个式子中和
x
x
x无关的项可以忽略掉,可定义如下等式:
J
v
,
k
(
x
)
=
{
1
2
(
x
0
−
x
ˇ
0
)
T
P
ˇ
0
−
1
(
x
0
−
x
ˇ
0
)
k
=
0
1
2
(
x
k
−
A
k
−
1
x
k
−
1
−
v
k
)
T
Q
k
−
1
(
x
k
−
A
k
−
1
x
k
−
1
−
v
k
)
,
k
=
1...
K
J
y
,
k
(
x
)
=
1
2
(
y
k
−
C
k
x
k
)
T
R
k
−
1
(
y
k
−
C
k
x
k
)
,
k
=
0...
K
\begin{aligned} &J_{v,k}(x)=\left\{ \begin{aligned} &\frac{1}{2}(x_0-\check x_0)^T\check P_0^{-1}(x_0-\check x_0)\qquad \qquad \qquad \qquad \qquad \ \ \ \ \ k=0\\ &\frac{1}{2}(x_k-A_{k-1}x_{k-1}-v_k)^TQ_k^{-1}(x_k-A_{k-1}x_{k-1}-v_k),\ k=1...K\\ \end{aligned} \right.\\ &J_{y,k}(x)=\frac{1}{2}(y_k-C_kx_k)^TR_k^{-1}(y_k-C_kx_k),\ \qquad \qquad \qquad \qquad \ \ \ \ k=0...K \end{aligned}
Jv,k(x)=⎩⎪⎨⎪⎧21(x0−xˇ0)TPˇ0−1(x0−xˇ0) k=021(xk−Ak−1xk−1−vk)TQk−1(xk−Ak−1xk−1−vk), k=1...KJy,k(x)=21(yk−Ckxk)TRk−1(yk−Ckxk), k=0...K
定义整体目标函数,最小化这个目标函数,就是我们的解:
J
(
x
)
=
∑
k
=
0
K
(
J
v
,
k
(
x
)
+
J
y
,
k
(
x
)
)
J(x)=\sum_{k=0}^K(J_{v,k}(x)+J_{y,k}(x))
J(x)=k=0∑K(Jv,k(x)+Jy,k(x))
声明
本文参考自《机器人学的状态估计》