里程计运动模型
速度运动模型采用机器人的速度来计算位姿的后验概率。里程计运动模型(Odometry motion model)则以里程计测量为基础来计算机器人随时间的运动。
通常,通过编码器可以获得机器人的里程信息。相比而言,里程计虽仍存在误差,但比之速度信息更为精确。
模型建立
理想模型
里程计信息实际上是对传感器的读取测量值,而非控制量。为建立作为测量的里程计模型且保持状态空间较小,将里程计测量值认为控制信号。
在时刻 t t t,机器人确切的位姿由随机变量 x t x_t xt建立,里程计用于估计该位姿信息。由于里程计存在漂移、打滑情况,机器人里程计坐标系与世界坐标系间不存在固定的变换关系。
里程计模型使用由机器人内部里程计测量的相对运动信息。即在时间间隔 ( t − 1 , t ] (t-1, t] (t−1,t]中,机器人位姿由 x t − 1 x_{t-1} xt−1前进至 x t x_t xt,里程计反馈了 x ˉ t − 1 = [ X ˉ Y ˉ θ ˉ ] T \bar x_{t-1}=\begin{bmatrix}\bar X&\bar Y&\bar \theta\end{bmatrix}^T xˉt−1=[XˉYˉθˉ]T到 x ˉ t = [ X ˉ ′ Y ˉ ′ θ ˉ ′ ] T \bar x_t=\begin{bmatrix}\bar X^{'}&\bar Y^{'}&\bar \theta^{'}\end{bmatrix}^T xˉt=[Xˉ′Yˉ′θˉ′]T的相对前进。采用上标“ ˉ \bar{\quad} ˉ”表示为机器人坐标系下坐标,该坐标系与世界坐标系转换关系未知。
由此,机器人的控制量 u t = [ x ˉ t − 1 x ˉ t ] T u_t=\begin{bmatrix}\bar x_{t-1}&\bar x_t\end{bmatrix}^T ut=[xˉt−1xˉt]T,可将任意两相邻时刻机器人位姿的相对差可通过三个基本运动串联得到,如图所示。
- 初始旋转: δ r o t 1 = a t a n 2 ( Y ˉ ′ − Y ˉ , X ˉ ′ − X ˉ ) − θ ˉ \delta_{rot1}=atan2(\bar Y^{'}-\bar Y,\bar X^{'}-\bar X)-\bar\theta δrot1=atan2(Yˉ′−Yˉ,Xˉ′−Xˉ)−θˉ
- 平移: δ t r a n s = ( X ˉ − X ˉ ′ ) 2 + ( Y ˉ − Y ˉ ′ ) 2 \delta_{trans}=\sqrt{(\bar X-\bar X^{'})^2+(\bar Y-\bar Y^{'})^2} δtrans=(Xˉ−Xˉ′)2+(Yˉ−Yˉ′)2
- 二次旋转: δ r o t 2 = θ ˉ ′ − θ ˉ − δ r o t 1 \delta_{rot2}=\bar \theta^{'}-\bar \theta-\delta_{rot1} δrot2=θˉ′−θˉ−δrot1
由此,机器人由初始位姿 x t − 1 = [ X Y θ ] T x_{t-1}=\begin{bmatrix}X&Y&\theta\end{bmatrix}^T xt−1=[XYθ]T沿着运动轨迹方向(下图中紫线所示)运动至当前时刻位姿 x t = [ X ′ Y ′ θ ′ ] T x_{t}=\begin{bmatrix}X^{'}&Y^{'}&\theta^{'}\end{bmatrix}^T xt=[X′Y′θ′]T可拆分为机器人首先旋转角度 δ r o t 1 \delta_{rot1} δrot1再沿着此方向平移 δ t r a n s \delta_{trans} δtrans,随后再次旋转 δ r o t 2 \delta_{rot2} δrot2抵达目标位姿,如图所示:
上图中,由三角函数化简可以得到如下表达式:
[
X
′
Y
′
θ
′
]
=
[
X
Y
θ
]
+
[
δ
t
r
a
n
s
⋅
cos
(
θ
+
δ
r
o
t
1
)
δ
t
r
a
n
s
⋅
sin
(
θ
+
δ
r
o
t
1
)
δ
r
o
t
1
+
δ
r
o
t
2
]
\begin{bmatrix} X^{'}\\Y^{'}\\\theta^{'}\\ \end{bmatrix}=\begin{bmatrix} X\\Y\\\theta \end{bmatrix}+\begin{bmatrix} \delta_{trans}\cdot\cos(\theta+\delta_{rot1})\\ \delta_{trans}\cdot\sin(\theta+\delta_{rot1})\\ \delta_{rot1}+\delta_{rot2} \end{bmatrix}
⎣⎡X′Y′θ′⎦⎤=⎣⎡XYθ⎦⎤+⎣⎡δtrans⋅cos(θ+δrot1)δtrans⋅sin(θ+δrot1)δrot1+δrot2⎦⎤
噪声模型
在真实环境下,机器人运动及里程计的测量存在噪声。定义里程计的测量值减去噪声得到的为实际里程值:
δ
^
r
o
t
1
=
δ
r
o
t
1
−
ε
α
1
δ
r
o
t
1
2
+
α
2
δ
t
r
a
n
s
2
δ
^
t
r
a
n
s
=
δ
t
r
a
n
s
−
ε
α
3
δ
t
r
a
n
s
2
+
α
4
δ
r
o
t
1
2
+
α
4
δ
r
o
t
2
2
δ
^
r
o
t
2
=
δ
r
o
t
2
−
ε
α
1
δ
r
o
t
2
2
+
α
2
δ
t
r
a
n
s
2
\begin{aligned} \hat \delta_{rot1}&=\delta_{rot1}-\varepsilon_{\alpha_1\delta_{rot1}^2+\alpha_2\delta_{trans}^2}\\ \hat \delta_{trans}&=\delta_{trans}-\varepsilon_{\alpha_3\delta_{trans}^2+\alpha_4\delta_{rot1}^2+\alpha_4\delta_{rot2}^2}\\ \hat \delta_{rot2}&=\delta_{rot2}-\varepsilon_{\alpha_1\delta_{rot2}^2+\alpha_2\delta_{trans}^2} \end{aligned}
δ^rot1δ^transδ^rot2=δrot1−εα1δrot12+α2δtrans2=δtrans−εα3δtrans2+α4δrot12+α4δrot22=δrot2−εα1δrot22+α2δtrans2
则,噪声下机器人的里程计运动模型如下所示:
[
X
′
Y
′
θ
′
]
=
[
X
Y
θ
]
+
[
δ
^
t
r
a
n
s
⋅
cos
(
θ
+
δ
^
r
o
t
1
)
δ
^
t
r
a
n
s
⋅
sin
(
θ
+
δ
^
r
o
t
1
)
δ
^
r
o
t
1
+
δ
^
r
o
t
2
]
\begin{bmatrix} X^{'}\\Y^{'}\\\theta^{'}\\ \end{bmatrix}=\begin{bmatrix} X\\Y\\\theta \end{bmatrix}+\begin{bmatrix} \hat\delta_{trans}\cdot\cos(\theta+\hat\delta_{rot1})\\ \hat\delta_{trans}\cdot\sin(\theta+\hat\delta_{rot1})\\ \hat\delta_{rot1}+\hat\delta_{rot2} \end{bmatrix}
⎣⎡X′Y′θ′⎦⎤=⎣⎡XYθ⎦⎤+⎣⎡δ^trans⋅cos(θ+δ^rot1)δ^trans⋅sin(θ+δ^rot1)δ^rot1+δ^rot2⎦⎤
闭式算法
算法推导
在真实环境下,通过里程计测量值减去实际值可以得到里程计误差:
δ
r
o
t
1
,
e
r
r
=
δ
r
o
t
1
−
δ
^
r
o
t
1
δ
t
r
a
n
s
,
e
r
r
=
δ
t
r
a
n
s
−
δ
^
t
r
a
n
s
δ
r
o
t
2
,
e
r
r
=
δ
r
o
t
2
−
δ
^
r
o
t
2
\begin{aligned} \delta_{rot1,err}&=\delta_{rot1}-\hat \delta_{rot1}\\ \delta_{trans,err}&=\delta_{trans}-\hat \delta_{trans}\\ \delta_{rot2,err}&=\delta_{rot2}-\hat \delta_{rot2}\\ \end{aligned}
δrot1,errδtrans,errδrot2,err=δrot1−δ^rot1=δtrans−δ^trans=δrot2−δ^rot2
由此,得到各项噪声的概率密度计算如下:
p
1
=
ε
α
1
δ
r
o
t
1
2
+
α
2
δ
t
r
a
n
s
2
(
δ
r
o
t
1
,
e
r
r
)
p
2
=
ε
α
3
δ
t
r
a
n
s
2
+
α
4
δ
r
o
t
1
2
+
α
4
δ
r
o
t
2
2
(
δ
t
r
a
n
s
,
e
r
r
)
p
3
=
ε
α
1
δ
r
o
t
2
2
+
α
2
δ
t
r
a
n
s
2
(
δ
r
o
t
2
,
e
r
r
)
\begin{aligned} p_1&=\varepsilon_{\alpha_1\delta_{rot1}^2+\alpha_2\delta_{trans}^2}(\delta_{rot1,err})\\ p_2&=\varepsilon_{\alpha_3\delta_{trans}^2+\alpha_4\delta_{rot1}^2+\alpha_4\delta_{rot2}^2}(\delta_{trans,err})\\ p_3&=\varepsilon_{\alpha_1\delta_{rot2}^2+\alpha_2\delta_{trans}^2}(\delta_{rot2,err}) \end{aligned}
p1p2p3=εα1δrot12+α2δtrans2(δrot1,err)=εα3δtrans2+α4δrot12+α4δrot22(δtrans,err)=εα1δrot22+α2δtrans2(δrot2,err)
假设各项噪声相互独立,则由
x
t
−
1
x_{t-1}
xt−1状态得到
x
t
x_t
xt状态的概率密度:
p
(
x
t
∣
u
t
,
x
t
−
1
)
=
p
1
⋅
p
2
⋅
p
3
p(x_t|u_t,x_{t-1})=p_1\cdot p_2\cdot p_3
p(xt∣ut,xt−1)=p1⋅p2⋅p3
算法设计
系统输入: 初始位姿 x t − 1 = [ X Y θ ] T x_{t-1}=\begin{bmatrix}X&Y&\theta\end{bmatrix}^T xt−1=[XYθ]T、控制量 u t = [ x ˉ t − 1 x ˉ t ] T u_t=\begin{bmatrix}\bar x_{t-1}&\bar x_t\end{bmatrix}^T ut=[xˉt−1xˉt]T、估计后继姿态 x t = [ X ′ Y ′ θ ′ ] T x_t=\begin{bmatrix}X^{'}&Y^{'}&\theta^{'}\end{bmatrix}^T xt=[X′Y′θ′]T
系统输出: 后继姿态为 x t x_t xt的概率 p ( x t ∣ u t , x t − 1 ) p(x_t | u_t,x_{t-1}) p(xt∣ut,xt−1)
假设条件: 控制算法以固定时间间隔 Δ t \Delta t Δt执行。
用参数 α 1 \alpha_1 α1 ~ α 4 \alpha_4 α4表示机器人里程计运动噪声系数:
- 里程计平移噪声
- 参数 α 1 \alpha_1 α1:平移运动中平移分量的噪声
- 参数 α 2 \alpha_2 α2:平移运动中旋转分量的噪声
- 里程计旋转噪声
- 参数 α 3 \alpha_3 α3:旋转运动中平移分量的噪声
- 参数 α 4 \alpha_4 α4:旋转运动中旋转分量的噪声
算法实现逻辑如下:
A
l
g
o
r
i
t
h
m
m
o
t
i
o
n
_
m
o
d
e
l
_
o
d
o
m
e
t
r
y
(
x
t
,
u
t
,
x
t
−
1
)
:
1
:
δ
r
o
t
1
=
a
t
a
n
2
(
Y
ˉ
′
−
Y
ˉ
,
X
ˉ
′
−
X
ˉ
)
−
θ
ˉ
2
:
δ
t
r
a
n
s
=
(
X
ˉ
−
X
ˉ
′
)
2
+
(
Y
ˉ
−
Y
ˉ
′
)
2
3
:
δ
r
o
t
2
=
θ
ˉ
′
−
θ
ˉ
−
δ
r
o
t
1
4
:
δ
^
r
o
t
1
=
a
t
a
n
2
(
Y
′
−
Y
,
X
′
−
X
)
−
θ
5
:
δ
^
t
r
a
n
s
=
(
X
−
X
′
)
2
+
(
Y
−
Y
′
)
2
6
:
δ
^
r
o
t
2
=
θ
′
−
θ
−
δ
^
r
o
t
1
7
:
p
1
=
p
r
o
b
(
δ
r
o
t
1
−
δ
^
r
o
t
1
,
α
1
δ
^
r
o
t
1
2
+
α
2
δ
^
t
r
a
n
s
2
)
8
:
p
2
=
p
r
o
b
(
δ
t
r
a
n
s
−
δ
^
t
r
a
n
s
,
α
3
δ
^
t
r
a
n
s
2
+
α
4
δ
^
r
o
t
1
2
+
α
4
δ
^
r
o
t
2
2
)
9
:
p
3
=
p
r
o
b
(
δ
r
o
t
2
−
δ
^
r
o
t
2
,
α
1
δ
^
r
o
t
2
2
+
α
2
δ
^
t
r
a
n
s
2
)
10
:
r
e
t
u
r
n
p
1
⋅
p
2
⋅
p
3
\begin{aligned} &Algorithm\quad motion\_model\_odometry(x_t,u_t,x_{t-1}): \\ 1:&\qquad \delta_{rot1}=atan2(\bar Y^{'}-\bar Y,\bar X^{'}-\bar X)-\bar\theta \\ 2:&\qquad \delta_{trans}=\sqrt{(\bar X-\bar X^{'})^2+(\bar Y-\bar Y^{'})^2}\\ 3:&\qquad \delta_{rot2}=\bar \theta^{'}-\bar \theta-\delta_{rot1}\\ \\ 4:&\qquad \hat\delta_{rot1}=atan2(Y^{'}-Y,X^{'}-X)-\theta \\ 5:&\qquad \hat\delta_{trans}=\sqrt{(X-X^{'})^2+(Y-Y^{'})^2}\\ 6:&\qquad \hat\delta_{rot2}=\theta^{'}-\theta-\hat\delta_{rot1}\\ \\ 7:&\qquad p_1=prob(\delta_{rot1}-\hat\delta_{rot1},\alpha_1\hat\delta_{rot1}^2+\alpha_2\hat\delta_{trans}^2)\\ 8:&\qquad p_2=prob(\delta_{trans}-\hat\delta_{trans},\alpha_3\hat\delta_{trans}^2+\alpha_4\hat\delta_{rot1}^2+\alpha_4\hat\delta_{rot2}^2)\\ 9:&\qquad p_3=prob(\delta_{rot2}-\hat\delta_{rot2},\alpha_1\hat\delta_{rot2}^2+\alpha_2\hat\delta_{trans}^2)\\ \\ 10:&\qquad return\quad p_1\cdot p_2\cdot p_3 \end{aligned}
1:2:3:4:5:6:7:8:9:10:Algorithmmotion_model_odometry(xt,ut,xt−1):δrot1=atan2(Yˉ′−Yˉ,Xˉ′−Xˉ)−θˉδtrans=(Xˉ−Xˉ′)2+(Yˉ−Yˉ′)2δrot2=θˉ′−θˉ−δrot1δ^rot1=atan2(Y′−Y,X′−X)−θδ^trans=(X−X′)2+(Y−Y′)2δ^rot2=θ′−θ−δ^rot1p1=prob(δrot1−δ^rot1,α1δ^rot12+α2δ^trans2)p2=prob(δtrans−δ^trans,α3δ^trans2+α4δ^rot12+α4δ^rot22)p3=prob(δrot2−δ^rot2,α1δ^rot22+α2δ^trans2)returnp1⋅p2⋅p3
其中,1~3行从里程计测量值得到相对运动参数值:
[
δ
r
o
t
1
δ
t
r
a
n
s
δ
r
o
t
2
]
T
\begin{bmatrix}\delta_{rot1}&\delta_{trans}&\delta_{rot2}\end{bmatrix}^T
[δrot1δtransδrot2]T
4~6行由机器人初始位姿 x t − 1 x_{t-1} xt−1及预计位姿 x t x_t xt计算得到实际相对运动参数: [ δ ^ r o t 1 δ ^ t r a n s δ ^ r o t 2 ] T \begin{bmatrix}\hat\delta_{rot1}&\hat\delta_{trans}&\hat\delta_{rot2}\end{bmatrix}^T [δ^rot1δ^transδ^rot2]T
7~9行计算各自噪声引起的概率密度 p 1 、 p 2 、 p 3 p_1、p_2、p_3 p1、p2、p3,由于各噪声相互独立,最后返回累乘值 p 1 ⋅ p 2 ⋅ p 3 p_1\cdot p_2\cdot p_3 p1⋅p2⋅p3。
函数 p r o b ( x , b 2 ) prob(x,b^2) prob(x,b2)用于实现x上均值为0,方差为 b 2 b^2 b2的概率分布,可用正态分布或三角形分布实现,同速度运动模型,不在赘述。
应注意,所有角度差值应保持在区间 [ − π , π ] [-\pi,\pi] [−π,π]内,即函数 p r o b ( x , b 2 ) prob(x,b^2) prob(x,b2)中参数 x x x属于该区间。
算法效果
在平面空间XOY下,设置机器人具有相同的初始姿态 x t − 1 x_{t-1} xt−1和控制量 u t u_t ut,则在不同里程计噪声参数下,模型具有不同效果。
当机器人具有中等误差(参数 α 1 \alpha_1 α1 ~ α 4 \alpha_4 α4),则如图所示:
当机器人具有较大的平移误差(参数 α 1 、 α 2 \alpha_1、\alpha_2 α1、α2),但具有较小的角度误差(参数 α 3 、 α 4 \alpha_3、\alpha_4 α3、α4),则如图所示:
当机器人具有较小的平移误差(参数
α
1
、
α
2
\alpha_1、\alpha_2
α1、α2),但具有较大的角度误差(参数
α
3
、
α
4
\alpha_3、\alpha_4
α3、α4),则如图所示:
当两次测量间时间较短时,里程计运动模型同速度运动模型的闭式算法效果差不多。也即,一个机器人如果置信度经常更新(0.1s更新一次),则运动模型间的不同差异不大。
采样算法
算法推导
采用粒子滤波用于采样,与闭式算法不同。该算法通过给定的初始姿态 x t − 1 x_{t-1} xt−1和控制量 u t = [ x ˉ t − 1 x ˉ t ] T u_t=\begin{bmatrix}\bar x_{t-1}&\bar x_t\end{bmatrix}^T ut=[xˉt−1xˉt]T,估计出一个当前位姿 x t x_t xt
算法设计
系统输入: 初始位姿 x t − 1 = [ X Y θ ] T x_{t-1}=\begin{bmatrix}X&Y&\theta\end{bmatrix}^T xt−1=[XYθ]T、控制量 u t = [ x ˉ t − 1 x ˉ t ] T u_t=\begin{bmatrix}\bar x_{t-1}&\bar x_t\end{bmatrix}^T ut=[xˉt−1xˉt]T
系统输出: 估计后继姿态 x t = [ X ′ Y ′ θ ′ ] T x_t=\begin{bmatrix}X^{'}&Y^{'}&\theta^{'}\end{bmatrix}^T xt=[X′Y′θ′]T
假设条件: 控制算法以固定时间间隔 Δ t \Delta t Δt执行。
算法实现逻辑如下:
A
l
g
o
r
i
t
h
m
s
a
m
p
l
e
_
m
o
t
i
o
n
_
m
o
d
e
l
_
o
d
o
m
e
t
r
y
(
x
t
,
u
t
,
x
t
−
1
)
:
1
:
δ
r
o
t
1
=
a
t
a
n
2
(
Y
ˉ
′
−
Y
ˉ
,
X
ˉ
′
−
X
ˉ
)
−
θ
ˉ
2
:
δ
t
r
a
n
s
=
(
X
ˉ
−
X
ˉ
′
)
2
+
(
Y
ˉ
−
Y
ˉ
′
)
2
3
:
δ
r
o
t
2
=
θ
ˉ
′
−
θ
ˉ
−
δ
r
o
t
1
4
:
δ
^
r
o
t
1
=
δ
r
o
t
1
−
s
a
m
p
l
e
(
α
1
δ
^
r
o
t
1
2
+
α
2
δ
^
t
r
a
n
s
2
)
5
:
δ
^
t
r
a
n
s
=
δ
t
r
a
n
s
−
s
a
m
p
l
e
(
α
3
δ
^
t
r
a
n
s
2
+
α
4
δ
^
r
o
t
1
2
+
α
4
δ
^
r
o
t
2
2
)
6
:
δ
^
r
o
t
2
=
δ
r
o
t
2
−
s
a
m
p
l
e
(
α
1
δ
^
r
o
t
2
2
+
α
2
δ
^
t
r
a
n
s
2
)
7
:
X
′
=
X
+
δ
^
t
r
a
n
s
cos
(
θ
+
δ
^
r
o
t
1
)
8
:
Y
′
=
Y
+
δ
^
t
r
a
n
s
sin
(
θ
+
δ
^
r
o
t
1
)
9
:
θ
′
=
θ
+
δ
^
r
o
t
1
+
δ
^
r
o
t
2
10
:
r
e
t
u
r
n
x
t
=
x
t
=
[
X
′
Y
′
θ
′
]
T
\begin{aligned} &Algorithm\quad sample\_motion\_model\_odometry(x_t,u_t,x_{t-1}): \\ 1:&\qquad \delta_{rot1}=atan2(\bar Y^{'}-\bar Y,\bar X^{'}-\bar X)-\bar\theta \\ 2:&\qquad \delta_{trans}=\sqrt{(\bar X-\bar X^{'})^2+(\bar Y-\bar Y^{'})^2}\\ 3:&\qquad \delta_{rot2}=\bar \theta^{'}-\bar \theta-\delta_{rot1}\\ \\ 4:&\qquad \hat\delta_{rot1}=\delta_{rot1}-sample(\alpha_1\hat\delta_{rot1}^2+\alpha_2\hat\delta_{trans}^2) \\ 5:&\qquad \hat\delta_{trans}=\delta_{trans}-sample(\alpha_3\hat\delta_{trans}^2+\alpha_4\hat\delta_{rot1}^2+\alpha_4\hat\delta_{rot2}^2)\\ 6:&\qquad \hat\delta_{rot2}=\delta_{rot2}-sample(\alpha_1\hat\delta_{rot2}^2+\alpha_2\hat\delta_{trans}^2)\\ \\ 7:&\qquad X^{'}=X+\hat\delta_{trans}\cos(\theta+\hat\delta_{rot1})\\ 8:&\qquad Y^{'}=Y+\hat\delta_{trans}\sin(\theta+\hat\delta_{rot1})\\ 9:&\qquad \theta^{'}=\theta+\hat\delta_{rot1}+\hat\delta_{rot2}\\ \\ 10:&\qquad return\quad x_t=x_t=\begin{bmatrix}X^{'}&Y^{'}&\theta^{'}\end{bmatrix}^T \end{aligned}
1:2:3:4:5:6:7:8:9:10:Algorithmsample_motion_model_odometry(xt,ut,xt−1):δrot1=atan2(Yˉ′−Yˉ,Xˉ′−Xˉ)−θˉδtrans=(Xˉ−Xˉ′)2+(Yˉ−Yˉ′)2δrot2=θˉ′−θˉ−δrot1δ^rot1=δrot1−sample(α1δ^rot12+α2δ^trans2)δ^trans=δtrans−sample(α3δ^trans2+α4δ^rot12+α4δ^rot22)δ^rot2=δrot2−sample(α1δ^rot22+α2δ^trans2)X′=X+δ^transcos(θ+δ^rot1)Y′=Y+δ^transsin(θ+δ^rot1)θ′=θ+δ^rot1+δ^rot2returnxt=xt=[X′Y′θ′]T
其中,1~3行从里程计测量值得到相对运动参数值:
[
δ
r
o
t
1
δ
t
r
a
n
s
δ
r
o
t
2
]
T
\begin{bmatrix}\delta_{rot1}&\delta_{trans}&\delta_{rot2}\end{bmatrix}^T
[δrot1δtransδrot2]T
4~6行由机器人初始位姿 x t − 1 x_{t-1} xt−1及采样样本计算得到实际相对运动参数值: [ δ ^ r o t 1 δ ^ t r a n s δ ^ r o t 2 ] T \begin{bmatrix}\hat\delta_{rot1}&\hat\delta_{trans}&\hat\delta_{rot2}\end{bmatrix}^T [δ^rot1δ^transδ^rot2]T
7~9行根据实际相对运动参数值,预测当前时刻机器人位姿 x t x_t xt
式中,函数 s a m p l e ( b 2 ) sample(b^2) sample(b2)用于实现均值为0,方差为 b 2 b^2 b2的随机样本生成,同速度运动模型中采样算法,不在赘述。
算法效果
在平面空间XOY下,设置机器人具有相同的初始姿态 x t − 1 x_{t-1} xt−1和控制量 u t u_t ut,且控制量与初始位姿同闭式计算中相同,则在不同不同里程计噪声参数下,具有不同效果。(采样500次)
当机器人具有中等误差(参数
α
1
\alpha_1
α1 ~
α
4
\alpha_4
α4),则如图所示:
当机器人具有较大的平移误差(参数 α 1 、 α 2 \alpha_1、\alpha_2 α1、α2),但具有较小的角度误差(参数 α 3 、 α 4 \alpha_3、\alpha_4 α3、α4),则如图所示:
当机器人具有较小的平移误差(参数
α
1
、
α
2
\alpha_1、\alpha_2
α1、α2),但具有较大的角度误差(参数
α
3
、
α
4
\alpha_3、\alpha_4
α3、α4),则如图所示:
当机器人不断进行移动时,不确定性将增加,样本将遍布越来越大的空间,如下图所示机器人沿着实现不断移动: