Modern-Robotics-位形空间

机器人在最基本的层面上是由刚体通过关节连接而成的,关节由驱动器驱动。基于上面的假设,这里将着重介绍如何表示一个机器人的位形(configuration),它是描述机器人中各点位置的指标。一般来说,平面刚体的位形可以用三个独立的变量(两个位置,一个姿态)来表示。空间刚体则需要6个独立的变量(三个位置,三个姿态)。这里变量的数量就是刚体的自由度(degree of freedom, dof)数,这也是刚体的位形空间(configuration space)的维度,其中位形空间为所有位形组成的空间。

机器人的自由度,也就是其位形空间的维度,是指其中所有的构件的自由度之和减去由关节连接产生的全部约束的数量。例如,转动(旋转)副和移动(平移)副,与之相连的两个物体之间只有一个自由度。因此可以认为,转动副或移动副提供了一个空间刚体相对另一个空间刚体运动的5维约束。

对于一个构建,我们可以利用Grubler公式 计算出该机器人机构的自由度。对于开链(open-chain)机器人,如六轴工业机器人,由于每个关键都是独立驱动的,因此自由度就是所有关节自由度的总和。对于闭链(closed chain)机器人,因为有些关节并非驱动副,因此公式只能计算出自由度下界。

除了计算自由度,令人感兴趣的其他有关位形空间的概念还包括位形空间的拓扑(topology 或“形状”)及其表达(representation)。如单位球表面上的一点可以用经度和纬度来表示,也可以使用x^2+y^2+z^2=1 中具体的x,y,z三个数值来表示。前者是一种显示参数化(explicit parametrization)表达,而后者则是对该空间的一种隐式参数化(implicit parametrization)表达。

机械臂通常配备有机械手或者手爪。更加通俗的说法是末端执行器(end-effector)。我们更加关心末端执行器相对参考基座的位形,而非整个手臂的位形。我们将末端执行器的位姿空间称为任务空间(task space)

机器人的位形空间和任务空间之间并非一一映射的关系。机器人的工作空间(workspace)则可以定位为末端执行器所能达到的任务空间的子集。

机器人是由一组称为构件(link)的物体相互之间通过不同类型的关节(join)机械连接而成,由电机等驱动器(actuator)为之提供相应的力和力矩,促使机器人中的构建产生运动。通常将由末端执行器(end-effector)

机器人最基本的是机器人的位形(configuration),根据它即可以确定机器人中所有点的位置。

机器人的自由度(degree of freedom, dof) 数就是表示其位形所需要的最小实值坐标数。

定义1 : 机器人的位形是指机器人上的每个点位的全体集合,表示机器人位形所需要的最少广义坐标数n就是机器人的自由度(dof),包含所有可能的机器人位形的n维空间称为位形空间(c-space)。机器人的位形通常用C-空间中的一个特征点来表示。

1. 刚体的自由度

可以使用以下规则来确定一个系统的自由度:

$$ 系统自由度 = (点的自由度之和)-(独立约束数)$$

这一规则还可以写成基于变量数和独立约束方程来描述系统的自由度,即:

$$系统自由度 = (变量数) - (独立约束方程数)$$

空间刚体(spatial rigid body) 具有6个自由度。同样的,一个在二维平面中运动的刚体,我们称之为平面刚体(planar rigid body) 具有三个自由度。我们也可将平面刚体看作一个具有6个自由度的空间刚体的特例。不过这时有三个独立的约束$Z_a=Z_b=Z_c=0$

2. 机器人的自由度

这里将讨论一种只需要简单的数一数刚体和关节数便可以得到机器人自由度的公式,也称Grubler公式。

机器人关节中转动副(revolute joint, R) 也称作铰链,保证绕关节轴做旋转运动。 移动副(prismatic joint, P) 也称为滑动或直线关节,只允许关节沿轴线方向平移(或直线)运动。螺旋副(helical joint, H) 也称为螺旋关节,允许绕螺旋轴同时旋转和平移。转动副,移动副和螺旋副都只有一个自由度。

关节也可以有多个自由度。圆柱副(cylindrical joint, C)就有两个自由度,允许沿某关节轴做独立的移动和旋转。万向节(universal joint, U)是另外一种两自由度的关节, 由一对转动副组成,两关节轴呈正交叉排列。 球铰(spherical joint, S) 有三个自由度,其功能类似人身体的关节。

一个关节可以看作一个刚体相对另外一个刚体提供了自由度,同时也可以看成为连接两个刚体的运动提供了的约束。例如,一个旋转关节既可以看作允许两个刚体在空间具有一个转动自由度,也可以看作对一个运动刚体相对另一个刚体提供了五维约束。简单的说,刚体的自由度数(平面刚体为3,空间刚体为6)减去关节提供的约束数一定等于关节的自由度数。

机构的自由度可以通过如下公式计算得到

Grubler公式:对于一个具有N个构件(含基座)的机构,令j为关节数,m为刚体的自由度数(对于平面机构,m=3;对于空间机构m=6),f_i为关节i对应的自由度数,c_i为其对应的约束数,对于所有的i,始终满足f_i + c_i = m_i。则用于计算机器人自由度的公式如下:

$$ dof = m(N-1) - \sum_{J}^{i=1} c_i= m(N-1)-\sum_{J}^{i-1}(m-f_i)=m(N-1-J)+ \sum_{J}^{i-1}(f_i)$$

这里$m(N-1)$是指刚体的自由度数;$\sum_{J}^{i=1} c_i$是指关节的约束数。

针对上面公式,需要区分两种类型的机构: 开链机构(open-chain mechanism)闭链机构(close-chain mechanism),这里开链机构也可以被称为串联机构(serial mechanism)

3. 位形空间:拓扑与表达

如果两个表面能够连续的从一种形状变化到另一种形状(不能采用切割或者粘接的方式来实现),我们即称之为拓扑等效(topologically equivalent)。如一个球表面可以通过简单的膨胀变成足球,因此我们说球表面和足球表面二者拓扑等效。相反,我们如果不采用切割等方式,无法将一个球展开成一个平面,因此球与平面在拓扑上是不等效的。

不同拓扑的一维空间包括:圆,直线,线段。圆在数学上可以写成 $S$ 或者$S^1$ ,表示的是一维球。直线在数学上可以写作 $E$ 或 $E^1$。表示的是一个一维度欧氏空间(或平面)。由于 $E^1$ 上的一点通常用实数来表示(选点坐标原点和长度单位之后),因此通常表示成 $R$ 或 $R^1$ 。线段由于存在两个端点,可以写成 $ [a, b] \subset R^1 $ 。

当线段不包含两个端点的时候,可以等效延展为直线,顾在拓扑上与直线等效。而闭式区段在拓扑上不与直线等效。因为直线不包含端点。

在更高的维度上, $R^n$ 表示n维欧式空间, $S^n$ 表示 n+1维空间内的n维球表面。

空间拓扑是空间本身的基本特性,它独立于我们选择何种坐标系来表达空间内部的参考点。例如,为了表示圆上的一点,我们可以采用极坐标的形式,即圆心到该点的向量与极坐标之间的夹角 $\theta $; 或者采用直角坐标的形式,即以圆心为参考坐标系的原点,点的坐标写成 (x,y) 的形式,并满足 $x^2 + y^2 = 1$。无论选取何种坐标(系)类型,该空间本身并未做出任何改变。

一些 C- 空间可以表示成两个或者更多低维空间的笛卡尔积(Cartesian product)形式。也就是说, C- 空间的一点也可以表示成低维空间点的组合。例如,平面刚体的 C- 空间可以写成 $R^2 * S^1$, 即该位形可以表示成 $R^2$ 空间内的 (x,y)和 $S^1$ 空间内的 $\theta $ 的乘积。

为了方便计算,我们必须给出位形空间的数值表达(representation),即一组实数。 欧氏空间的一点很自然的使用一个向量来表示。形位空间表达式可以有不同的选择,因此,与空间拓扑并不是一个概念,后者独立于表达。例如三维空间中的同一点可以选择不同的参考坐标系(坐标轴原点和方向)和度量单位,因此会有不同的坐标表示,但其空间拓扑确是相同的,与这些选择无关。

用n个坐标或者参数表示n维空间的方法称为空间的显式参数化(explicit parametrization)表示。显示参数化法对如地球这样的具有特殊参数范围的球体特别有效。

对于地球这种具有特殊范围的球体,南极和北极属于 奇异(singularity) 的情况。这种奇异的属性和球体本身无关,而与所选择的表示方法有很大的关系。这种表示可能导致在奇异时速度趋近无穷大,即使球面上一点以常数运动。

通常有下面两种方法来解决这一问题:

  • 在空间中使用不止一个 坐标图(coordinate chart),其中每个坐标图分别只包含空间中的一部分显示参数化表达,并且每张图都无奇异。如果你定义了一组无奇异的坐标图,彼此重叠并覆盖整个空间,如上述的两张图,就称这些图构成了空间图册(atlas)。使用图册的优点在于,其表示总是采用最少数量的图册;缺点是需要额外的簿记以实现坐标图的转换与规避奇异。
  • 空间使用隐式表示(implicit representation)而不是显示参数化表示。隐式表示将n维空间看作是嵌入在多于n维的欧式空间中,正如二维单元球可以看成是嵌入在三维欧氏空间中的表面一样。这种方式的缺点是参数比自由度数要多,优点在于该表示无奇异。另外一个优点是:对于闭链机构,无论构建显示的参数化方程,还是绘出图册都非常困难,但是找到其隐式表达式相对比较容易。所有的点的坐标满足闭环方程(loop-closure equation)

4. 位形与速度约束

对于含多环的机器人而言,通常隐式形式比显示参数化形式更容易表达。通常隐式表达的方程又被称作是闭环方程(loop-closure equation)。对于这个四杆机构,含有4个未知数,三个方程。因此对应的所有解表示为四维空间中的一维曲线,并构成C- 空间。

对于闭链四连杆机构,由Grubler的公式我们可以推断出,四连杆机构有一个自由度,所以其C- 空间可以用1个变量来表示。我们这里可以将这个C-空间视为嵌入在四维空间中的一维空间,这个空间可以由3个闭环方程定义,其物理意义为闭环结构终点的位置和姿态,必须等于其起点位置和姿态。当我们定义一个向量 $\theta $ 来表示关节角,就可以将该闭环方程重写为向量形式。这些约束称为完整约束,因为它们减少了C-空间的维度。

我们可以将该速度约束写成矩阵和速度向量相乘的形式。有时我们也把完整约束称为“可积”约束,因为完整约束的本质都是这些速度约束的积分。如形式的车辆,转向的角度并不能突变。因此我们将这种称为非完整约束。非完整约束削减了汽车可能的速度空间 — 汽车不能直接向侧面滑动。但是它并没有减少位形空间。

机器人可以同时受到完整约束和非完整约束。完整约束是对位形的约束,非完整约束是对速度的约束。Pfaffian约束的形式是:$A(\theta ) $ 乘以 $ \theta$ 点等于0。

5. 任务空间和工作空间

这里将开始介绍另外两个与机器人位形相关的概念:任务空间和工作空间。这两个概念均与机器人末端执行器的位形相关,而与整个机器人的位形无关。

任务空间(task space) 是指机器人的任务能够自然表达的空间。例如,若机器人的任务是在一张纸上面用钢笔画一副图,该任务空间就可以表示为 $R^2$ 。若机器人的任务为操作一个刚体,该任务空间的自然表达就是刚体的C-空间,表示的是附着在机器人末端执行器上的坐标位置姿态。定义任务空间的最终决定因素是任务本身,而与机器人无关。

工作空间(workspace) 是指机器人末端执行器所能到达的位形的指标。工作空间主要取决于机器人的结构,而与任务无关。

任务空间和工作空间两者均与用户的选择密切相关,特别是用户具有选择末端执行器部分自由度度而无需表示的权利(如机器人的姿态)。任务空间和位形空间也不同于机器人的C-空间。任务空间或者工作空间内的一点可以通过不止一种机器人位形来实现,即该点并不是机器人位形空间内的一个充分指定。任务空间内的一些点有时机器人根本无法到达,但是根据定义,工作空间内的所有点至少是机器人的某一个位形可以到达的。

例如对于SCARA机器人。其末端执行器的位形可以完全通过4个参数 $(x,y,z, \phi)$ 来确定。其中 $(x,y,z)$ 表示末端中心的直角坐标,而 $\phi$ 表示末端执行器在x-y平面中的姿态。该机器人的任务空间可以定义成为$R^3 * S^1$。其工作空间典型的情况下定义成笛卡尔空间内的可达点,因为所有的姿态 $ \phi \in S^1$ 都可以在所有的可达点处实现。

对于用于喷涂等应用的标准6轴工业机器人。附着在机器人末端的喷嘴作为末端执行器。喷嘴的位形可以通过5个参数来确定:喷嘴的直角坐标位置$(x,y,z)$和喷嘴所指像的方向角 $(\theta, \phi)$。该机器人的任务空间可以写成 $R^3S^2$ ,其工作空间为$R^3S^2$ 内的可达点,或者为了简化,将工作空间定义为子集 $R^3$ 的形式,对应喷嘴的所有可达直角坐标位置。