描述

好久没写文章了,最近终于闲下来可以稍微写一些。
最近有些项目与规划相关,出于补齐短板的目的,要做一些总结。

这篇文章写的很好。可以作为参考。

动力学与运动学

机器人的动力学描述了作用在机器人上的力与机器人物理状态的变化之间的关系。例如,自动驾驶汽车的动力学将描述加速度和由轮胎、重力、空气动力学等引起的力之间的关系。

机器人的运动学描述了对机器人运动的不由力引起的额外的限制或约束。例如,具有多个关节的机械臂受到运动学约束,因为每个关节上的刚性连接只允许绕单个轴旋转。

机器人或自动驾驶车辆都要综合考虑动力学和运动学,某些情况 为了简化运算,在不追求精确的情况下,动力学和运动学都有可能被简化考虑。比如有些情况,车会被简化为一个质点,等等情况。

运动学约束

1. 广义坐标

广义坐标指的是一组可以完全指定机器人的唯一位置的坐标。广义,顾名思义,这个坐标中的值除了我们熟知的x、y、z,也可能包括其他状态量,是一个泛泛的坐标概念。

举例子,当一个机器人在一个二维平面上时,仅仅描述他的位置,则(x, y)就是他的广义坐标,向量表示为\xi \subseteq R^2。当该车辆具备方向时,(x, y, \theta)就是他的广义坐标向量\xi \subseteq R^3。广义坐标向量用R^n表示,n就是坐标的维数。

2. 运动学约束

机器人运动学中的运动学约束是指机器人在运动过程中受到的限制,包括位置、姿态、速度和加速度等因素。这些约束会对机器人的自由度产生影响,从而影响机器人的运动和控制。运动学约束通常用数学模型来描述,为机器人的运动控制提供了理论基础。

广义坐标:\xi = [\xi_1,…,\xi_n]^T
运动学约束:a_i(\xi, \dot\xi) = 0, i =1,…,k<n

针对n维的广义坐标,他的运动学约束一定是小于n的(不然,大于等于n,方程直接求解了,还运动啥。。。)。
如公式所示,运动学约束中是可以含有广义坐标\xi,及广义速度\dot\xi的。如果把运动学约束方程,对时间t进行求导。

\frac{da_i(\xi,\dot\xi)}{dt} = \frac{da_i(\xi,\dot\xi)}{d\xi}\cdot \frac{d\xi}{dt} = \frac{da_i(\xi,\dot\xi)}{d(\xi)}\cdot \dot\xi

注意到\dot\xi 实际上就是广义速度,那么如果前项\frac{da_i(\xi,\dot\xi)}{d\xi},也就是运动学约束对广义坐标求导后,不包含广义速度项(也就是说只和广义坐标有关)。这种约束有个特殊的名字:Pfaffian约束

Pfaffian约束(普法夫约束)是一种特殊的运动学约束,Pfaffian约束是由k个线性无关约束的集合,且这些约束相对于广义速度是线性的约束。

3. 完整约束和非完整约束(Holonomic and Nonholonomic Constraints)

当运动学约束函数中只包含广义坐标(不依赖广义速度)的函数,就是一个完整约束。满足完整约束的系统就是一个完整系统。完整约束系统可以表达为

f(x_1,x_2,……,x_n,t)=0

不能用上式表示的系统,就是一个非完整系统。完整系统的完整约束方程与位置、时间有关,与速度无关。

非完整系统主要表现特征是存在不可积分的微分约束。非完整约束系统的表达式如下:

f(x_1,x_2,……,x_n,x_1’,x_2’,……,x_m’,t)=0

其中x_1’,x_2’,……,x_m’都是不可积分的,这样的系统就是一个非完整系统。非完整系统至少存在于三个状况:物体在做滚动运动;系统的约束包括不等式;系统的约束与速度有关(例如普法夫约束)。完整系统是一个只受完整约束的系统,该约束总是可以等价地表示为Pfaffian约束(普法夫约束)。但是反过来不一定实现,不是所有的具备Pfaffian约束的系统都具备完整约束,只有可以利用积分可以积回完整约束的,才具备完整约束。

完整约束限制了广义坐标的全部值,如果系统的每个状态均用广义坐标来表示的话,完整约束实际上限制的,就是系统可以达到的全部有效状态。

不太好理解,需要我们结合几个例子来简单了解一下就可以了:一个单摆系统,在无外力干扰的情况下,摆锤的广义坐标只有x和y,它们的值会一直满足一个圆弧的约束,且与速度无关,所以单摆系统就是一个完整系统,满足一个完整约束。

一个简单移动机器人系统,它的广义坐标为(x, y, \theta),在理想情况下该机器人不可以发生平移。不能平移的条件就是,车轮在横向方向的速度为0。它是一个普法夫约束,但该普法夫约束不能积分为完整约束,所以该系统是一个非完整系统,具备非完整约束。

完整约束就是状态之间的到达没有限制,而非完整约束就是状态间的到达必须满足一些固定条件

总之,如果机器人约束方程中包含坐标对时间的导数(如运动约束),而且方程不可能积分为有限形式,这类约束称为非完整约束。非完整约束方程总是微分方程的形式。反之,如果机器人约束方程中不包含坐标对时间的导数,或者约束方程中的微分项可以积分为有限形式,这类约束称为完整约束。

运动学模型

有了广义坐标和运动学约束,我们下一步就是得到系统的运动学模型。运动学模型将由一组形式为\dot\xi(t)=G(\xi(t))u(t) 的微分方程组成,其中u(t)被称为系统输入或控制。给定一个特定的输入u(t)和一个初始条件\xi(0),使用这个模型可以求出系统的轨迹。

公式:假设系统的广义坐标向量为\xi\subseteq R^n,同时这个系统受k个Pfaffian运动学约束A(\xi)^T\cdot \dot\xi=0,那么运动学模型可以这样描述

\dot\xi=G(\xi)\cdot u

其中u是系统的控制量或者说是输入量,G(\xi)描述了输入量与状态量变化,二者之间的关系。

运动学模型与上一节讲述的约束,关系就是:G(\xi)\subseteq R^{n\times(n-k)},n是系统的广义坐标维数,k是该系统运动学Pfaffian约束A(\xi)^T\cdot \xi=0的个数。同时,G(\xi)的每一列g_i,均满足A(\xi)^T\cdot g_i=0

运动学模型的方程组,实际上就是描述了状态的微分量与控制量的关系,每一次的控制量作用于该系统能带来状态量多少改变。而它们之间的那个变化关系,是与系统的约束相关的。

以移动机器人车轮模型为例,简化情况下它是不可以侧滑的。它的速度方向单位向量为[cos\theta, sin\theta],则垂直于速度方向的单位向量应该为[sin\theta, -cos\theta],因此它具备一个非完整约束(在垂直于航向的方向上速度为0)。将速度向量表示为 v = [\dot x, \dot y]^T,那么这个非完整约束就是

e_{v,\perp}\cdot v = [sin\theta, -cos\theta]\cdot[\dot x, \dot y]^T = \dot x sin\theta - \dot y cos\theta = 0

因此它具备一个非完整约束,k=1

a_i(\xi)^T \cdot \dot\xi =[sin\theta, -cos\theta, 0]\cdot \dot\xi =[sin\theta, -cos\theta, 0][\dot x, \dot y, \dot\theta]^T = 0

上述公式i=1,因此$A^T(\xi)$就是$a_1(\xi)^T$,因为我们现在只有一个约束。

系统的广义坐标是三维的,n = 3,因此按照上面的公式,则$G(\xi)$就应该是一个3*2的矩阵。[sin\theta, -cos\theta, 0]的零空间(矩阵A的零空间就是满足Av=0的所有解v的集合)就是[cos\theta, sin\theta,0][0, 0, 1]

因此移动机器人的运动学模型就是如下

\begin{bmatrix}\dot x \\ \dot y \\ \dot\theta \end{bmatrix} = \begin{bmatrix}cos\theta & 0 \\ sin\theta & 0 \\ 0 & 1 \end{bmatrix} \cdot \begin{bmatrix}v \\ \omega \end{bmatrix}

式子中,v就是车辆的速度,w就是车辆旋转的角速度。发没发现,其实这个运动学公式我们本可以直接写出,但我们通过约束方程推出了相同的结论。

参考文献

https://zhuanlan.zhihu.com/p/642317490

总结

接下来我要写一些关于阿克曼转向动力学及轨迹规划的文章。