前言

当我们想要让机器人能够自主地移动和导航时,通常需要知道其运动的相关信息,例如它移动的轨迹、速度等。那么里程计(即测量车辆或机器人轮子旋转的行驶距离)就是极为重要的组成部分之一。两轮差速机器人里程计是指通过测量机器人两个驱动轮的旋转角度和移动距离,来计算机器人的运动轨迹和位置变化的过程。其基本原理是利用旋转编码器测量轮子的旋转,然后通过运动学模型计算机器人的运动状态。

我的项目正好也进行到这里了,就把我学到的东西分享一下,我将在本文中讨论两轮差速机器人里程计,这种机器人利用不同速度的两个轮子来控制运动方向。先从基本原理开始,逐步深入了解它的功能和应用,与大家一起学习、进步。

正文

一. 两轮差速机器人的原理

差速机器人是一种特殊的移动机器人,它通过控制轮子的速度和方向来实现移动。下图显示了一个典型的差速机器人,其中有两个并联的轮子连接在一个桥上,底部支持着机器人的主体。不同于其他类型的移动机器人,差速机器人会使相对的两个轮子以不同的速度旋转,因此导致机器人具有很好的操控能力和灵活性。通过控制各自轮子的速度和方向,差速机器人能够前进、后退、左转和右转,以及进行一些更加复杂的运动。

二、两轮差速机器人运动学模型

首先先对两轮差速机器人模型进行运动学模型解算,对于上图的两轮差速机器人模型,它的运动模型图约为下图的样子:

其中各符号含义为:

  • vl 和vr 分别为左右轮速
  • L为两个驱动轮间的距离
  • R为转弯半径
  • d为机器人向左转过α角度后,右轮比左轮多走的距离
  • α机器人的转角

设移动机器人前进速度为v,它等于两个驱动轮轮速度的平均值:

机器人经过Δt时间后原地转过α角度时,右轮比左轮多走的距离d为:

$$d={(v{_{r}}-v{_{l})·\Delta{t}}}$$

右轮比左轮多走的距离d实际是半径为L的扇形弧长,根据其性质可得:

则转过的角度为:

$$\alpha=\frac{d} {L}=\frac{{(v{_{r}}-v{_{l})·\Delta{t}}}}{L}$$

设机器人绕圆心运动的角速度为ω,则其为:

$$w=\frac{\alpha}{\Delta{t}}=\frac{{(v{_{r}}-v{_{l})·\Delta{t}}}}{L·\Delta{t}}=\frac{{v{_{r}}-v{_{l}}}}{L}$$

由此可根据机器人的角速度与线速度的关系可以求得机器人绕圆心的旋转半径:

$$R=\frac{v}{w}=\frac{(v{_{l}}+v{_{r}})·L}{2({v{_{r}}-v{_{l}}})}$$

通过上述这三个公式,我们可以计算出机器人在局部坐标系下的速度。

三、里程计计算方法

在两轮差速机器人中,我们通常使用两个编码器来测量驱动轮的旋转量,然后通过编码器的值求解左右轮的速度,然后进行里程计求解

全局位姿的积分

通过对全局的速度进行积分,我们可以得到机器人的全局位姿。在实际应用中,我们通常采用离散时间方法进行积分。设当前时刻为t,上一时刻为t-1,则经过时间间隔为Δt的机器人的全局位姿相对于初始位置x和y方向上的偏移可以表示为:

移动机器人前进速度等于两个驱动轮轮速度的平均值:

$${\Delta}x=R-R*cos{{\alpha}}$$
$${\Delta}y=R*sin{\alpha}$$

由于机器人初始坐标为里程计坐标原点,所以机器人的当前位置为:

x = x' + deltaX

y = y' + deltaY

θ = θ' + deltaθ

其中x,y分为t时刻机器人的x,y坐标,x',y'分为t-1时刻机器人的x,y坐标

θ为t时刻机器人的朝向,θ'为t-1时刻机器人的朝向,其中deltaθ就是上述为Δt的时间间隔内的机器人旋转角度α。

通过上述实现,不断地更新机器人的位置和姿态,就可以得到机器人的里程计信息,以及它的运动轨迹。

总结

本文介绍了两轮差速机器人里程计的原理和实现方法,通过对机器人行进过程中的轮子运动进行测量,可以计算出机器人在全局坐标系下的位姿。这对于机器人导航和定位任务非常重要。需要注意的是,里程计计算方法存在累积误差,因此在实际应用中,通常需要将里程计信息与其他传感器数据(如激光雷达、视觉等)进行融合,以提高定位精度。此外,差速机器人在滑动、打滑等情况下,里程计计算的准确性会受到影响。通常可以采用滤波算法进行数据处理,以提高里程计的精度和稳定性。常用的滤波算法包括卡尔曼滤波、扩展卡尔曼滤波等。因此,在设计机器人系统时,需要充分考虑这些因素,以提高机器人的性能。

这次的分享就到这里了,最近几天我将分享一下如何把我之前写到的串口通信和这篇里程计编写结合到一起,然后完成上位机底层通信文件的编写,敬请期待吧!