操作臂运动学

| |

不同的教材采用的符号系统不尽相同,业界并无统一规范,这里主要参照斯坦福大学约翰 克雷格《机器人学导论》(introduction to robotics : mechanics and control, [美] 约翰 J.克雷格(John Craig) / 贠超 / 机械工业出版社,第四版)

连杆的描述

运动副是两构件直接接触并能产生相对运动的活动联接。
从操作臂的固定基座开始为连杆进行编号,固定基座记为连杆 $0$,第一个可动连杆记为连杆 $1$,以此类推,操作臂最末端的连杆记为连杆 $n$ ,为了确定末端执行器在三维空间的位置和姿态,操作臂至少需要 $6$ 个关节。串联关节和并联关节或有不同。
下图是经典的DH参数定义图,引自机器人学经典教材斯坦福大学克雷格《机器人学导论》。

经典的连杆模型图经典的连杆模型图

假设连杆是一个刚体。
关节是连接两个连杆的运动副,旋转关节的关节轴是三维空间中的直线。
连杆$i$绕着关节轴$i$相对于连杆$i-1$转动。
两个关节轴之间的距离(空间中两条直线的距离被定义为它们公垂线的长度)就是连杆长度
关节轴 $i-1$ 于关节轴 $i$ 之间的距离(公垂线长度)记为 $a_{i-1}$ ,它是连杆 $i-1$ 的长度。
假设以两个关节轴之间的公垂线 $a_{i-1}$ 为垂线,作一个平面,将两个关节轴投影到这个平面上,在平面内按照右手法则从轴 $i-1$ 绕公垂线 $a_{i-1}$ 转向轴 $i$ 的夹角,就是连杆扭转角,连杆 $i-1$ 的扭转角记为 $\alpha_{i-1}$ ,其中公垂线 $a_{i-1}$ 的方向是由轴$i-1$指向轴$i$。
如果两个关节轴恰好在同一平面内,此时 $\alpha_{i-1}$ 就是它们的夹角,夹角的符号可以任意选取,这种情况下 $\alpha_{i-1}$ 没有实际意义。

至此,我们完成了使用连杆长度和连杆扭转角来定义两个关节轴之间关系的任务。(数学概念为:使用两个参数来描述空间中任意两条直线之间的关系)

关节的描述(连杆连接关系的描述)

下图同样引自《机器人学导论》

连杆的连接关系连杆的连接关系

相邻两个连杆之间有一个公共的关节轴,记为连杆 $i$ 和 $i-1$ ,轴 $i$ 。
沿着关节轴的方向,两个连杆之间的距离称为连杆偏距,关节轴 $i$ 上的连杆偏距记作 $d_i$ 。
两个相邻连杆绕公共轴线旋转的夹角,称为关节角,记为$\theta_i$。

对于旋转关节来说,连杆偏距 $d_i$ 是常数,关节角 $\theta_i$ 是变量;对于平移关节,连杆偏距 $d_i$ 是变量,关节角 $\theta_i$ 是常数。

为了计算的方便起见,习惯上,定义连杆长度 $a_0=a_n=0.0$,关节角 $\alpha_0 = \alpha_n = 0$,实际应用中根本不需要定义 $a_n$ 和$\alpha_n$ 。如果关节1是转动关节,那么 $\theta_1$ 的零位可以任意选取,且$d_1=0$,同理若关节1是移动关节,$d_1$ 的零位可以任意选取,且$\theta_1=0$。

D-H参数法

$$ (a_i, \alpha_i, d_i , \theta_i) $$

综上,机器人的每个连杆都可以用4个运动学参数来描述,其中两个用于描述连杆本身,另外两个用于描述连杆之间的连接关系。
通常,对于转动关节, $\theta_i$ 是关节变量,其他参数为设计常数。
对于移动关节, $d_i$ 是关节变量,其他参数为设计常数。
这就是Denavit-Hartenberg方法,即D-H法。

连杆坐标系的定义

固连在连杆 $i$ 上的坐标系记作坐标系 ${ i }$ ,下图是坐标系 ${ i-1 }$ 和 ${ i }$的定义图示。

引自《机器人学导论》引自《机器人学导论》
* 对于运动链中间位置的连杆坐标系

坐标系 ${ i }$ 的 $\hat Z$ 轴与关节轴 $i$ 重合,记作 $\hat Z_i$ 。
坐标系 ${ i }$ 的原点位于公垂线 $a_i$ 与关节轴 $i$ 的交点处。
$\hat X_i$ 沿着 $a_i$ 的方向由关节$i$指向关节$i+1$。
$\hat Y_i$ 由右手定则确定。
当 $a_i=0$ 时, $\hat X_i$ 垂直于 $\hat Z_i$ 和 $\hat Z_{i+1}$ 所在的平面,按右手定则绕 $\hat X_i$ 的转角定义为 $\alpha_i$ ,此时 $\hat X_i$ 的方向有两种选择,对应 $\alpha_i$ 可以有两种选择。

固定在机器人基座(连杆0)上的坐标系称为坐标系{0},这个坐标系固定不动,将它作为参考坐标系
理论上,参考坐标系{0}可以任意设定,实际应用中为简便起见,通常设定 $\hat Z_{0}$ 沿着关节轴1的方向,并且当关节变量1为0时,设定参考坐标系{0}和坐标系{1}重合,得到$a_0 = 0, \alpha_0 =0$ ,且当关节1为转动关节时,$d_1 =0$,当关节1为移动关节时,$\theta_1 =0$ 。
对于转动关节$n$,设定 $\theta_n =0$ ,此时$\hat X_N$轴与$\hat X_{N-1}$轴方向相同,选取坐标系{N}原点位置使之满足$d_n=0$ 。对于移动关节$n$,设定$\hat X_N$轴的方向使$\theta_n =0$,当 $d_n=0$ 时选取坐标系{N}的原点位于 $\hat X_{N-1}$ 轴与关节轴n的交点位置。

连杆参数在连杆坐标系中的重新表述 设定好连杆坐标系后,我们可以依据坐标系重新整理出连杆参数的定义:

$$ a_i = 沿 \hat X_i 轴,从\hat Z_i 移动到 \hat Z_{i+1} 的距离 \\ \alpha_i = 绕 \hat X_i 轴,从\hat Z_i 旋转到 \hat Z_{i+1} 的角度 \\ d_i = 沿 \hat Z_i 轴,从\hat X_{i-1} 移动到 \hat X_{i} 的距离 \\ \theta_i = 绕 \hat Z_i 轴,从\hat X_{i-1} 旋转到 \hat X_{i} 的角度 $$

一般设定 $a_i>0$ ,其余三个参数可正可负。按上面方式建立的坐标系不唯一

建立连杆坐标系的步骤

  1. 找出各关节轴,画出这些轴线的延长线,在下面的步骤2-5中仅考虑相邻轴线(关节轴 $i$ 和 $i+1$)
  2. 画出相邻两个关节轴 $i$ 和 $i+1$ 之间的公垂线或交点,它与关节轴$i$的交点作为连杆坐标系{i}的原点
  3. 规定 $\hat Z_i$ 轴沿着关节轴 $i$ 的指向。
  4. 规定$\hat X_{i}$轴沿着公垂线的指向,若两关节轴相交则规定$\hat X_{i}$轴垂直于两关节轴所在的平面
  5. 按右手定则确定$\hat Y_{i}$轴
  6. 当第一个关节变量为$0$时,规定坐标系{0}和坐标系{1}重合,对于坐标系 {$N$} ,在尽量使连杆参数为$0$的前提下任意选取原点和$\hat X_{N}$的方向。

操作臂运动学

现在我们将上面的内容联系起来,求出连杆$n$相对于连杆$0$的位置和姿态。
考虑建立坐标系{$i$}相对于坐标系{$i-1$}的变换,这个变换是关于四个连杆参数的函数,对于任意给定的机器人,这个变换函数只有一个变量,另外三个参数由机械系统本身确定。
对于坐标系{$i$},记坐标系 ${ i }$ 的位姿为 ${}^{i}P$ ,坐标系 ${ i-1 }$ 的位姿为 ${}^{i-1}P$ ,设3个中间坐标系 ${ P } { Q} { R}$ 有:

$$ {}^{i-1}P = {}^{i-1}_R T \quad{} {}^R_Q T \quad{} {}^Q_P T \quad{} {}^P_i T \quad{}^{i}P \\ \Updownarrow \\ {}^{i-1}P = {}^{i-1}_i T \quad{} {}^i P \\ {}^{i-1}_i T = {}^{i-1}_R T \thickspace {}^R_Q T \thickspace {}^Q_P T \thickspace{} {}^P_i T $$

其中坐标系{P}相对应坐标系{i}存在位移$d_i$变化,坐标系{P}与坐标系{Q}存在转角$\theta_i$变化,坐标系{Q}与坐标系{R}存在位移$a_{i-1}$变化,坐标系{R}与坐标系{i-1}存在旋转$\alpha_{i-1}$变化。
前面的博客中,我们已经了解了机器人学中的空间描述与坐标变换,因此有:

$$ {}^{i-1}_i T = R_X(\alpha_{i-1}) D_X(a_{i-1}) R_Z(\theta_i) D_Z(d_i) \\ \Updownarrow \\ {}^{i-1}_i T = Screw_X(a_{i-1}, \alpha_{i-1}) Screw_X(d_{i}, \theta_{i}) $$

其中,$Screw_Q(r,\phi)$含义是沿着$\hat Q$轴平移r,再绕$\hat Q$轴旋转角度$\phi$的组合变换。
计算,得到:

$$ {}^{i-1}_i T = \begin{pmatrix} \cos \theta_i & -\sin \theta_i & 0 & a_{i-1} \\ \sin \theta_i \cos \alpha_{i-1} & \cos \theta_i \cos \alpha_{i-1} & -\sin \alpha_{i-1} & -\sin \alpha_{i-1} d_i \\ \sin \theta_i \sin \alpha_{i-1} & \cos \theta_i \sin \alpha_{i-1} & \cos \alpha_{i-1} & \cos \alpha_{i-1} d_i \\ 0 & 0 & 0 & 1 \end{pmatrix} $$

完美!

对于连杆系:

$$ {}^{0}_N T = {}^{0}_1 T \thickspace {}^{0}_2 T \thickspace {}^{0}_3 T \cdots \thickspace {}^{N-1}_N T $$

由此我们可以根据机器人各关节的位置传感器值推导出机器人末端执行器位姿

对于一个具有n个自由度的操作臂来说,它的所有连杆的位置可以由n个关节变量确定,这就是 $n \times 1$ 的关节向量,所有关节向量组成的空间被称为关节空间。关节受驱动器控制,将所有的关节向量表示成一组驱动器的变量方程就是驱动向量
机器人的正运动学就是由驱动空间描述转换为关节空间描述再转换到笛卡尔空间描述的过程。

一般而言,规范坐标系的名称如下:

对于工具的位置:

$$ {}^S_T T = {}^B_S T^{-1} \thickspace {}^B_W T \thickspace {}^W_T T $$

这是工具坐标系相对于固定坐标系的变换矩阵,是广义的运动学方程。根据连杆的几何形状,由基座端的广义变换矩阵(${}^B_S T$)和另一端的执行器坐标变换矩阵(${}^W_T T$)可以计算出运动学方程${}^S_T T$。

参阅: