里程估计是通过传感器信息,递推的估计机器人的实时位置、姿态等信息的一类方法和技术。优势是计算量较小,实时性较好,但是存在误差累计问题。问题的核心是通过将当前时刻与前一个时刻的传感器信息进行对比,推断两个时刻的姿态增量和位置增量,然后通过累加或者积分的方式估计机器人的变化。
大致分成四种里程计估计:
1、运动里程计
2、激光里程计估计
3、视觉里程计估计
4、多传感器融合估计
(一)运动里程计
使用的编码器是轮式编码器和惯性测量单元。
1、轮式编码器里程估计
编码器将角位移转换成电信号,并进行转速测量,测量机器人运动速度和位置等。按照工作原理,编码器分为光电式、磁电式和触电电刷式。目前应用广泛的是光电式。光电式编码器由光栅盘和光电检测装置组成。按照信号原理分类,编码器分成增量式编码器和绝对式编码器两种。增量式编码器通过脉冲数来表示位移的大小。在开机后需进行寻零操作,同时由于误差累计的影响使得检测速度受到影响。绝对式编码器,编码盘中的每个角度对应一个数字码,再利用外部记圈器件进行位置纪录和测量。绝对式编码器开机无需寻零,没有累计误差,测量转速高,但是结构复杂,体积庞大,成本高。
光电式增量编码器的工作原理:光源透过光栏板照射光电原件产生周期性电信号,点信号通过整形电路将正弦波信号,转化成方波信号,进行脉冲信号的基数便可以计算转角和转速。
2、基于轮式编码器的里程计估计方案
以差分驱动移动机器人为例进行里程计估计方案的描述:首先根据编码器产生的脉冲数计算电动机或轮子的旋转圈数,然后根据轮子周长计算形式速度,最后根据运动速度积分计算里程变化。
(1)计算轮子的转速
n
(
L
)
=
N
(
L
)
p
∆
t
n(L) = \frac{N(L)}{p∆t}
n(L)=p∆tN(L)
n
(
R
)
=
N
(
R
)
p
∆
t
n(R) = \frac{N(R)}{p∆t}
n(R)=p∆tN(R)
其中,n(L)和n(R)为左右轮编码器的转速;N(L)和N(R)分别为左右轮编码器在∆t时间内的测得的脉冲数;p为编码器每转过一圈输出的脉冲数。
(2)运动速度计算
v(L)= n(L)πD
v®=n®πD
v
=
v
(
L
)
+
v
(
R
)
2
=
n
(
L
)
+
n
(
R
)
π
D
2
v = \frac{v(L)+v(R)}{2} = \frac{n(L)+n(R)πD}{2}
v=2v(L)+v(R)=2n(L)+n(R)πD
其中,D为移动机器人车轮直径;v(L)和v®分别是移动机器人左右轮的速度
(3)移动机器人里程计估计
轮式编码器双轮差分运动模型
基于以上定义,移动机器人的航向角变化量
θ
≈
s
i
n
θ
=
d
L
=
(
v
(
R
)
−
v
(
L
)
)
∆
t
L
θ≈sinθ = \frac{d}{L}= \frac{(v(R)-v(L))∆t}{L}
θ≈sinθ=Ld=L(v(R)−v(L))∆t
圆弧运动的角速率
ω
=
θ
∆
t
=
v
(
R
)
−
v
(
L
)
L
ω = \frac{θ}{∆t}= \frac{v(R)-v(L)}{L}
ω=∆tθ=Lv(R)−v(L)
运动半径
R
=
v
ω
=
L
(
v
(
R
)
+
v
(
L
)
)
2
(
v
(
R
)
−
v
(
L
)
)
R = \frac{v}{ω}=\frac{L(v(R)+v(L))}{2(v(R)-v(L))}
R=ωv=2(v(R)−v(L))L(v(R)+v(L))
因此,移动机器人在x和y方向上的位移变化量求得
∆x=R-Rcosθ
∆y=Rsinθ
为满足编码器测量精度要求,假设精度要求为0.01m,根据经验公式判断:
π
D
p
≤
0.01
m
\frac{πD}{p}≤0.01m
pπD≤0.01m