文章目录
1 引言
估计的任务,即从带有随机误差的观测数据中估计出某些参数或某些状态变量。
估计问题一般分三类:
滤波:从当前和过去的观测值来估计信号的当前值。
预测或外推:从过去的观测值来估计信号的现在值或将来值。
平滑或内插:从过去的观测值来估计过去的信号值。
2 基于概率的定位方法
2.1 状态空间模型
利用概率密度函数表示机器人位置变化,即运动概率模型
P
(
x
k
∣
x
k
−
1
,
a
k
−
1
)
P(x_k|x_{k-1},a_{k-1})
P(xk∣xk−1,ak−1)
表示机器人在
k
−
1
k-1
k−1时刻执行了运动
a
k
−
1
a_{k-1}
ak−1后,
k
k
k时刻机器人从
x
k
−
1
x_{k-1}
xk−1位置到达位置
x
k
x_k
xk的概率。
机器人的感知模型
P
(
z
k
∣
x
k
)
P(z_k|x_{k})
P(zk∣xk)
(个人:表示机器人已经到达
x
k
x_k
xk位置后,感知量为
z
k
z_k
zk的概率密度函数)
感知数据的高维数导致感知模型的概率不容易计算,我们将原始感知数据
s
s
s投影到低维的特征向量
z
z
z上。
2.2 贝叶斯滤波原理
k
k
k表示时间
x
0
:
k
=
{
x
i
:
i
=
0
,
1
,
…
,
k
}
x_{0:k}=\{x_i:i=0,1,\dots,k\}
x0:k={xi:i=0,1,…,k}代表系列未知变量
z
1
:
k
=
{
z
i
:
i
=
1
,
2
,
…
,
k
}
z_{1:k}=\{z_i:i=1,2,\dots,k\}
z1:k={zi:i=1,2,…,k}代表传感器感知系列变量
若给定系列感知量
z
1
:
k
z_{1:k}
z1:k,则未知量
x
0
:
k
x_{0:k}
x0:k的条件概率分布根据贝叶斯原理有
p
(
x
0
:
k
∣
z
1
:
k
)
=
p
(
z
1
:
k
∣
x
0
:
k
)
p
(
x
0
:
k
)
∫
p
(
z
1
:
k
∣
x
0
:
k
)
p
(
x
0
:
k
)
d
x
0
:
k
p(x_{0:k}|z_{1:k})=\frac{p(z_{1:k}|x_{0:k})p(x_{0:k})}{\int{p(z_{1:k}|x_{0:k})p(x_{0:k})dx_{0:k}}}
p(x0:k∣z1:k)=∫p(z1:k∣x0:k)p(x0:k)dx0:kp(z1:k∣x0:k)p(x0:k)
其中,
p
(
x
0
:
k
)
p(x_{0:k})
p(x0:k)是先验概率密度,包含未获得新感知数据之前未知状态变量的所有信息。
p
(
z
1
:
k
∣
x
0
:
k
)
p(z_{1:k}|x_{0:k})
p(z1:k∣x0:k)是感知量为
z
1
:
k
z_{1:k}
z1:k时的似然概率密度,表达了获得传感器感知数据的前提下未知状态变量出现的概率。
p
(
x
0
:
k
∣
z
1
:
k
)
p(x_{0:k}|z_{1:k})
p(x0:k∣z1:k)是后验概率密度。
贝叶斯定理描述了先利用先验概率密度,获得新的传感器感知数据修正先验知识,得到修正后的后验概率密度的过程。
由于不断得到新的感知数据的修正,后验概率密度比先验概率密度更加接近于被估计变量的真实概率分布。
而后验概率密度将作为下一时刻估计变量的先验概率密度,如此递归求解的后验概率密度
p
(
x
0
:
k
∣
z
1
:
k
)
p(x_{0:k}|z_{1:k})
p(x0:k∣z1:k)是贝叶斯估计的完全解。
利用 p ( x 0 : k ∣ z 1 : k ) p(x_{0:k}|z_{1:k}) p(x0:k∣z1:k)计算出后验滤波概率密度 p ( x k ∣ z 1 : k ) p(x_{k}|z_{1:k}) p(xk∣z1:k)为 p ( x k ∣ z 1 : k ) = ∬ ⋯ ∫ p ( x 0 : k ∣ z 1 : k ) d x 0 d x 1 … d x k − 1 p(x_{k}|z_{1:k})=\iint\dots\int{p(x_{0:k}|z_{1:k})dx_0dx_1\dots{}dx_{k-1}} p(xk∣z1:k)=∬⋯∫p(x0:k∣z1:k)dx0dx1…dxk−1
为提高计算效率,采用递推更新的方法获得后验滤波概率密度:
(1)运动预测
已知 k − 1 k-1 k−1时刻的后验滤波概率密度 p ( x k − 1 ∣ z 1 : k − 1 ) p(x_{k-1}|z_{1:k-1}) p(xk−1∣z1:k−1), k k k时刻,利用系统运动模型求出 x k x_k xk的先验滤波概率密度 p ( x k ∣ z 1 : k − 1 ) p(x_{k}|z_{1:k-1}) p(xk∣z1:k−1)。
(2)感知更新
k k k时刻,利用传感器获得感知量 z k z_k zk修正运动预测阶段获得的先验滤波概率密度,修正后得到 k k k时刻的后验滤波概率密度 p ( x k ∣ z 1 : k ) p(x_{k}|z_{1:k}) p(xk∣z1:k)。
设
k
−
1
k-1
k−1时刻滤波概率密度为
p
(
x
k
−
1
∣
z
1
:
k
−
1
)
p(x_{k-1}|z_{1:k-1})
p(xk−1∣z1:k−1),假设系统感知
z
k
z_k
zk独立且系统状态
x
k
x_k
xk服从一阶马尔可夫过程。
具体步骤:
h
h
h应该是测量函数
Dirac Delta函数在除了零以外的点函数值都等于零,而其在整个定义域上的积分等于1:
递推式计算过程中,需要知道运动模型、感知模型和机器人初始信度。
2.3 基于贝叶斯滤波的定位
贝叶斯滤波理论提供一个利用概率方法递归进行状态预估的抽象的理论框架。
其中,连续型和离散型是概率的表达方式。
(1)线性卡尔曼滤波器
系统运动状态模型和传感器感知模型都是线性的且符合高斯分布,同时噪声也符合高斯分布,此时线性卡尔曼滤波器定位结果最优。
利用均值和方差描述机器人位姿的概率分布
B
e
l
(
x
k
)
=
N
(
x
k
;
u
k
,
Σ
k
)
=
1
(
2
π
)
d
/
2
∣
Σ
k
∣
1
/
2
e
x
p
[
−
1
2
(
x
k
−
u
k
)
T
Σ
k
−
1
(
x
k
−
u
k
)
]
\begin{aligned}Bel(x_k)&=N(x_k;u_k,\Sigma_{k})\\&=\frac{1}{(2\pi)^{d/2}|\Sigma_k|^{1/2}}exp[-\frac{1}{2}(x_k-u_k)^T\Sigma_k^{-1}(x_k-u_k)]\end{aligned}
Bel(xk)=N(xk;uk,Σk)=(2π)d/2∣Σk∣1/21exp[−21(xk−uk)TΣk−1(xk−uk)]
概率分布的均值
u
k
u_k
uk,协方差矩阵
Σ
k
\Sigma_k
Σk,维数为
d
d
d;
N
(
x
k
;
u
k
,
Σ
k
)
N(x_k;u_k,\Sigma_{k})
N(xk;uk,Σk)表示符合高斯分布的
x
k
x_k
xk的概率分布。
协方差越大,不确定性越高。
典型的线性系统的运动预测方程和感知方程用线性方程描述为
x
k
=
A
x
k
−
1
+
w
k
−
1
z
k
=
H
x
k
+
ν
k
\begin{aligned}&x_k=Ax_{k-1}+w_{k-1}\\&z_k=Hx_k+\nu_k\end{aligned}
xk=Axk−1+wk−1zk=Hxk+νk
其中,
A
A
A是一个
n
×
n
n\times{n}
n×n的矩阵,系统噪声为
w
k
−
1
w_{k-1}
wk−1,
H
H
H为
m
×
n
m\times{n}
m×n矩阵,
ν
k
\nu_k
νk表示传感器感知噪声。
预测与校正不断迭代的过程,具体步骤:
其中, K k K_k Kk为卡尔曼增益,卡尔曼增益越大,后验信度的计算中将融合的新的感知信息越多。
局限性在于只能表示单峰的概率分布,系统的状态误差不能太大。
无法应对出现一定信度的错误感知数据的情况,无法实现全局定位。
(2)扩展卡尔曼滤波器
为应对非线性的机器人定位系统的系统模型。
核心本质:利用泰勒展开式在参考点对非线性系统进行线性化,再利用卡尔曼滤波器理论实现系统预估与校正的过程。
定义非线性系统的状态方程和感知模型为
x
k
=
f
(
x
k
−
1
)
+
w
k
−
1
z
k
=
h
(
x
k
)
+
ν
k
\begin{aligned}&x_k=f(x_{k-1})+w_{k-1}\\&z_k=h(x_k)+\nu_k\end{aligned}
xk=f(xk−1)+wk−1zk=h(xk)+νk
具体步骤为
雅可比矩阵 A k A_k Ak和 H k H_k Hk利用最新的状态估计值来计算。
如果系统模型的非线性程度比较大,扩展卡尔曼滤波器将无法进行有效预估,针对这个问题就提出了无迹卡尔曼滤波器。
(3)无迹卡尔曼滤波器
U K F UKF UKF是在 E K F EKF EKF框架下对运动状态转移函数和感知函数进行无迹变换的改进,通过 S i g m a Sigma Sigma点控制分布采样来提高滤波器对非线性系统的状态估计精度。
系统状态空间模型的运动状态转移函数
x
k
+
1
=
F
(
x
k
,
u
k
,
ν
k
)
x_{k+1}=F(x_k,u_k,\nu_k)
xk+1=F(xk,uk,νk)
k
k
k时刻状态量
x
k
x_k
xk;第
k
k
k步运动控制量
u
k
u_k
uk;第
k
k
k步运动噪声
ν
k
\nu_k
νk,服从高斯分布
p
(
ν
k
)
=
N
(
0
,
R
ν
)
p(\nu_k)=N(0,R^{\nu})
p(νk)=N(0,Rν)
R
ν
R^{\nu}
Rν为
ν
\nu
ν协方差。
运动预测模型 p ( x k ∣ x k − 1 ) = N [ F ( x k − 1 , u k − 1 ) , R ν ] p(x_k|x_{k-1})=N[F(x_{k-1},u_{k-1}),R^{\nu}] p(xk∣xk−1)=N[F(xk−1,uk−1),Rν]
传感器感知模型 p ( z k ∣ x k ) = N [ H ( x k , n k ) , R n ] p(z_k|x_{k})=N[H(x_{k},n_{k}),R^{n}] p(zk∣xk)=N[H(xk,nk),Rn]第 k k k步感知测量值 z k z_k zk,感知噪声 n k n_k nk,服从高斯分布 p ( n k ) = N ( 0 , R n ) p(n_k)=N(0,R^{n}) p(nk)=N(0,Rn) R n R^{n} Rn为 n n n协方差。
系统感知函数
z
k
=
H
(
x
k
,
n
k
)
z_k=H(x_{k},n_{k})
zk=H(xk,nk)
据全概率公式,系统初始化条件
p
(
x
0
∣
z
0
)
=
p
(
z
0
∣
x
0
)
p
(
x
0
)
p
(
z
0
)
p(x_0|z_0)=\frac{p(z_0|x_0)p(x_0)}{p(z_0)}
p(x0∣z0)=p(z0)p(z0∣x0)p(x0)
x
x
x和
Z
Z
Z的均值和协方差的精度都达到了2阶。
U
K
F
UKF
UKF精度和鲁棒性都比
E
K
F
EKF
EKF好,且计算量增加不大。