描述

这篇文章介绍两种非常重要的机器人运动模型:差速轮模型与阿克曼模型。

差速轮模型

1. 运动学约束

现在行业内一些标榜自己转弯半径小的移动机器人公司,使用的就是一个简单的差速轮模型,不了解的客户还以为这是什么高端技术。
所谓差速轮模型,实际上就是两个驱动轮固定在同一根轴上,通过两轮之间的轮速差实现自身的转动,非驱动轮来实现从动及稳定的功能。现在我们通过运动学来进行一下分析。首先我简单画了一幅图如下:

假设机器人当前的广义坐标为[x, y, \theta]^T,代表机器人目前的位置是[x,y],车头朝向\theta方向。机器人可以在世界中自由移动,但假设它存在无侧滑的约束,也就是说该机器人的两个主动轮均不可以发生侧向的运动。这是两个约束方程,实际上,两个主动轮无侧滑是等效于机器人无侧滑的,可以等效为一个约束方程。我们来证明这件事

\begin{cases} \dot p_l \cdot e_{v,\perp}=0 \\ \dot p_r \cdot e_{v,\perp}=0 \end{cases} \Leftrightarrow \dot p_{car}\cdot e_{v,\perp}

令驱动轮轴距为L,机器人位置为驱动轴的中心。
以左轮为例,从驱动轴中心到左轮中心的长度即为L/2,从车辆中心到左轮中心的角度为\theta + \pi/2,则左轮中心的坐标通过以下公式可以推到得出

sin(\pi/2+\theta)=cos(\theta)

cos(\pi/2+\theta)=-sin(\theta)

p_l=[x_l,y_l] = [x, y]+\frac{L}{2}\cdot[cos(\pi/2+\theta), sin(\pi/2+\theta)]\\ = [x,y] + \frac{L}{2}[-sin(\theta),cos(\theta)] \\ =[x-\frac{L}{2}sin(\theta), y+\frac{L}{2}cos(\theta)]

同理,右轮中心的坐标为

p_r=[x_r,y_r] = [x+\frac{L}{2}sin(\theta), y-\frac{L}{2}cos(\theta)]

然后我们对左右轮的广义坐标在时间上求导

\dot (sin\theta) = cos(\theta)

\dot (cos\theta) = -sin(\theta)

\dot p_l = [x-\frac{L}{2} \cdot \dot\theta \cdot cos(\theta), y-\frac{L}{2}\cdot \dot\theta \cdot sin(\theta)]

\dot p_r = [x+\frac{L}{2} \cdot \dot\theta \cdot cos(\theta), y+\frac{L}{2}\cdot \dot\theta \cdot sin(\theta)]

上面的式子,描述了在运动中左右轮中心随时间的变化关系。由于左右轮收到了无侧滑的运动约束,我们将上面求出的\dot p_l\dot p_r带入约束方程

\begin{cases} \dot p_l \cdot e_{v,\perp}=0 \\ \dot p_r \cdot e_{v,\perp}=0 \end{cases} ,\\ e_{v,\perp}= [sin\theta,-cos\theta]^T

两个式子做加法,就得到了如下的关系:

\dot xsin(\theta)-\dot ycos(\theta)=0

[\dot x,\dot y]就是机器人本身位置的导数。

因此,我们证明了双驱动轮无侧滑约束实际上等价于机器人自身无侧滑约束。

2. 运动学方程

我们证明了差速模型的约束方程只有一个,但事实上我们仍然要对左右驱动轮的轮速分别控制。

机器人的广义速度\dot p,可以表示成左右轮广义速度的平均值

\dot p = (\dot p_l + \dot p_r)/2

而左右轮的广义速度,众所周知可以表示为轮子的角速度乘以轮子的半径v=w\cdot r

因此关于速度可以得出如下关系

v = \frac{(v_l+v_r)}{2}= \frac{r}{2}(w_l+w_r)

关于车的航向角\theta,我们来这么理解,假设如上面示意图所示,车子在向左开,显然右车轮的速度要大于左车轮的速度,才可以让车向左转弯。该航向角的偏航大小,实际上可以理解为右轮多走的那个弧长大小。因此有如下结论

\theta\cdot L=(v_r-v_l)t

两边对时间t求导,就可以得到广义坐标\dot\theta的公式了

\dot\theta=\frac{r}{L}(w_r-w_l)

再描述一下广义坐标\dot x\dot y

x = v\cdot t\cdot cos\theta

y=v\cdot t\cdot sin\theta

带入速度v,并对时间t求导后可以得到

\dot x =\frac{r}{2}\cdot cos\theta \cdot (w_l+w_r)

\dot y =\frac{r}{2}\cdot sin\theta \cdot (w_l+w_r)

因此差速轮的运动学模型可以最终表示为

\begin{bmatrix} \dot x \\ \dot y \\ \dot\theta\end{bmatrix}=\begin{bmatrix}\frac{r}{2}cos\theta \ \frac{r}{2}cos\theta \\ \frac{r}{2}sin\theta \ \frac{r}{2}sin\theta \\ -\frac{r}{L} \ \frac{r}{L}\end{bmatrix} \begin{bmatrix}w_l \\ w_r \end{bmatrix}

在机器人运动控制时,我们通过上层的轨迹跟踪算法,可以得到机器人所需的角速度。通过运动学模型,我们就可以通过控制左右两个驱动轮的轮齿脉冲,来控制机器人的运动轨迹了。

3. 特点

双轮差速模型的优点:结构简单
双轮差速模型的缺点:载重小,易侧翻
在双轮差速模型的基础上,还有四轮差速模型,但相较于双轮差速模型其转弯灵活性更差。市面上大部分机器人也仅仅为双轮差速模型,因此这里暂不做介绍。

阿克曼模型

1. 基本原理与特点

阿克曼转向(Ackermann Steering)是由英国机械师乔治·艾克曼在1817年发明的。这一概念离我们并不遥远。当前世界的汽车,使用的就是阿克曼转向模型。

阿克曼模型中很关键的概念就是阿克曼角。如果没有阿克曼角,车辆转弯时两个转向轮的转角就会相等,此时外侧车轮和内侧车轮会各自绕着不同的圆心运动,反馈到驾驶员处的感觉就是车辆有点拐不过来。如下图。

在此刻,前轮和后轮会呈现一个稳固的三角形,这时车辆别说转弯了,能不能动都是问题

  • 基本原理:
    在汽车转弯的时候,内外轮转过的角度不一样,内侧轮胎转弯半径小于外侧轮胎,内侧车轮的转向角度大于外侧车轮,使得车辆能够围绕一个圆心进行转弯。这个角度差就是“阿克曼角”。这种转向方式能够使得车辆所有车轮垂线均能指向圆心,车身过弯姿态更加顺畅稳定,并且不会造成轮胎损耗。它描述了前轮转向角度、车轮转角、转向杆长度和转向半径之间的关系。在汽车设计和控制系统中,阿克曼转向模型被广泛应用,因为它可以帮助工程师更好地理解和控制汽车的转向行为。

  • 实际实现:
    车辆在转弯时驱动轮应该有不同的轮速。利用阿克曼模型的汽车的驱动方式分为:前驱、后驱和四驱。利用“差速器”这样一个机械结构,将发动机的转速自动分配到两个驱动轮上,使两个驱动轮的速度不同并满足转弯需求。前驱的差速器显然在前轮上,后驱的差速器在后轮上,四驱的差速器在前后轮均有。

2. 运动学模型

前驱和后驱的运行学分析大体相同,这里以一个后驱车辆为例进行分析。(补充知识:正向运动学指的是机器人控制空间描述计算出末端位姿,逆向运动学指的是知道机器人末端位姿反推各个控制量。在机械臂、移动机器人中这些控制量指的都是不同器件,这里不再赘述。)

我画了一个阿克曼模型的车辆示意图。车辆速度与角速度,与两个驱动轮的速度与角速度之间,有如下关系

\begin{bmatrix} v_{car} \\ w_{car}\end{bmatrix}=\begin{bmatrix} \frac{1}{2} \ \frac{1}{2} \\ -\frac{1}{d} \ \frac{1}{d}\end{bmatrix}\begin{bmatrix} v_{left} \\ v_{right}\end{bmatrix}=\begin{bmatrix} \frac{r}{2} \ \frac{r}{2} \\ -\frac{r}{d} \ \frac{r}{d}\end{bmatrix}\begin{bmatrix} w_{left} \\ w_{right}\end{bmatrix}

其中r为车轮半径。

我们注意到,后驱的阿克曼模型与双轮差速模型的结构是一样的,因此这样的运动学模型与之前的双轮差速运动模型也是一样的。因此,采用后驱阿克曼模型的正向运动学模型,与双轮差速模型一致

除此之外,我们还需要知道前轮的转角,根据图我们可以得出如下关系

tan\delta=\frac{l}{R}

而车辆转弯半径R实际上就是由车速和车角速度决定的

R = \frac{v_{car}}{w_{car}}

因此前轮的角度值为

\delta= arctan(\frac{l\cdot w_{car}}{v_{car}})

这样在机器人或者机器人上,我们就可以通过控制方向盘转角、左轮转动角速度和右轮转动角速度来控制运动轨迹了。而这样的阿克曼模型可以进一步简化为一个自行车模型:前面一个轮子提供旋转,后面一个轮子提供速度。

有个挺有意思的现象,通过左右两个驱动轮转速的不同,可以得到一个旋转半径。前轮还有一个旋转角,它也意味着一个旋转半径,这两个半径之间有什么关系呢。

当应用该模型的是车辆时,无论是前驱还是后驱,我们控制的只有油门和刹车踏板,在不考虑差速器的情况下,意味着左右驱动轮有着相同的速度。而方向盘才是控制旋转的关键,通过方向盘与旋转角存在的固定映射关系,差速器需要将两个驱动轮的转速进行调整,从而保证转弯。当应用该模型的是机器人时,无论是前驱还是后驱,我们都可以分别控制两个驱动轮的轮齿脉冲,来控制左右轮的速度。这样就要求我们控制非驱动轮的机械结构提供对应的旋转角(或者是以从动轮的方式被动提供转角),才能保证控制准确。

3. 特点

阿克曼模型的机械结构设计,设定了前轮是存在最大转角的(小于90度),因此整个运动是存在最小的旋转半径的。因此应用阿克曼模型的车辆是不可以原地旋转的,例如:我们生活中常见的汽车、工业里的叉车等。

另外两轮之间的差速规律是:无论转弯或者直行,两侧驱动车轮的转速之和始等于差速器壳转速的2倍。例如差速器壳转速为V,则内侧后轮的转速为V-a,外侧后轮的转速为V+a。

总结

总之,阿克曼转向模型和阿克曼底盘运动学模型是现代汽车设计和控制系统中非常重要的概念和模型,它们可以帮助工程师更好地理解和控制汽车的转向和行驶行为。下一篇文章去介绍一下RS曲线和代码。