【笔记】机器人学笔记

本文最后修改于 197 天前,部分内容可能已经过时!

机器人的自由度

要个确定一刚体在空间的位置,需要三个数据来确定,但无法确定其姿态。
所以再引入三个数据,就可以完成的确定刚体在空间的位置和姿态。
具有七个自由度的机器人没有唯一解,所以不能确定用什么路径去决策姿态,所以工业机器人都在6个自由度或更少。

机器人的坐标

机器人的构型由坐标系决定,通常一个机器人有三个滑动关节和三个旋转关节,即3P3R。
常见的机器人坐标结构形式如下:

直角坐标/台架型 3P :这种机器人由三个线性关节组成,这三个关节用于确定执行末端的位置,通常还有附加的旋转关节确定末端执行器的姿态。

圆柱坐标型 PRP :圆柱坐标机器人有两个滑动关节和一个旋转关节来确定部件的位置,再附加一个旋转关节来确定部件的姿态。

球坐标型 P2R :球坐标机器人采用球坐标系,它用一个滑动关节和两个旋转关节来确定部件的位置,再用一个附加的旋转关节确定部件的姿态。
1.jpg

机器人的坐标参考系

全局坐标参考系:全局坐标参考系由$x$、$y$和$z$定义。通常这个坐标系取地面。
关节坐标参考系:关节坐标参考系用于描述机器人每个独立关节的运动。
工具坐标参考系:工具坐标参考系用于描述机器人手相对于固连在手上的坐标系的运动。所有的运动都是相对于这个本地的$n$、$o$和$a$坐标系。具体见后。
2.jpg

机器人的编程模式

通常包含硬件逻辑模式引导或示教模式连续轨迹示教模式以及软件模式四种。

机器人运动学的矩阵表示

空间向量的表示:用以下的形式表示运动分量。

$$ \begin{equation} P={ \left[ \begin{array}{ccc} P_x\\ P_y\\ P_z\\ \omega \end{array} \right ]}, a_x=\frac{P_x}{\omega},b_x=\frac{P_y}{\omega},c_z=\frac{P_z}{\omega} \end{equation} $$

其中$a_x$,$b_y$,$c_z$是在空间中的坐标,${\omega}$为比例因子。

如果${\omega}=0$,则$a_x$,$b_y$,$c_z$为无穷大,此时表示它是一个方向向量。

为了方便方向向量都化为单位向量,需要对向量进行归一化处理,
[例]以下向量:

$$ \begin{equation} P={ \left[ \begin{array}{c} 6\\ 10\\ 4\\ 2 \end{array} \right ]} \end{equation} $$

先除比例因子2,再归一化之后得到:

$$ \begin{equation} P_{unit}={ \left[ \begin{array}{c} 0.487\\ 0.811\\ 0.324\\ 0 \end{array} \right ]} \end{equation} $$

其中$\sqrt{{0.487}^{2}+{0.811}^{2}+{0.324}^{2}}=1$。

刚体的表示

参考坐标系$F_{n,o,a}$的形式如下:

$$ \begin{equation} F={ \left[ \begin{array}{ccc} n_x&o_x&a_x\\ n_y&o_y&a_y\\ n_z&o_z&a_z \end{array} \right ]} \end{equation} $$

其中$n$,$o$,$a$分别取自于normalorientationapproach

坐标系在固定参考坐标系中的表示

$$ \begin{equation} F={ \left[ \begin{array}{cccc} n_x&o_x&a_x&p_x\\ n_y&o_y&a_y&p_y\\ n_z&o_z&a_z&p_z\\ 0&0&0&1 \end{array} \right ]} \end{equation} $$

3.jpg

其中前3个向量是${\omega}=0$的方向向量,第四个${\omega}=1$是该坐标系原点相对于参考坐标系的位置。
[例]假设现有一坐标系textit{F}的原点位于$(3,5,7)$的位置,$n$轴与$x$轴平行,$o$相对于$y$轴的角度为$45^\circ $,$a$轴相对于$z$轴的角度为$45^\circ$,则这个坐标可表示为:

$$ \begin{equation} F={ \left[ \begin{array}{cccc} 1&0&0&3\\ 1&0.707&-0.707&5\\ 0&0.707&0.707&7\\ 0&0&0&1 \end{array} \right ]} \end{equation} $$

4.jpg

观察矩阵可知,一共有12条信息,除了比例因子一行不包含信息外,有9条姿态信息和3条位置信息。所以必定存在约束条件使得信息数限制为6个。约束条件如下:

  • 3个向量$n$、$o$和$a$互相垂直。
  • 每个由方向余弦表示的单位向量长度必须为1

以上两个条件可转换为6个约束方程:

$$ \begin{cases} n\cdot{o}=0\\ n\cdot{a}=0\\ \left|{n}\right|=1\\ \left|{o}\right|=1\\ \left|{a}\right|=1\\ \end{cases} $$

前三个方程也可以用叉积表示:
$$n{\times}o=a$$

[例]假设现有一坐标系textit{F}的原点位于$(3,5,7)$的位置,$n$轴与$x$轴平行,$o$相对于$y$轴的角度为$45^{\circ}$,$a$轴相对于$z$轴的角度为$45^{\circ}$,则这个坐标可表示为:

$$ \begin{equation} F={ \left[ \begin{array}{cccc} ?&0&?&3\\ 0.707&?&?&5\\ ?&?&0&2\\ 0&0&0&1 \end{array} \right ]} \end{equation} $$

由约束方程可得:

$$ \begin{equation} \left\{ \begin{aligned} {n_x}{o_x}+{n_y}{o_y}+{n_z}{o_z}&=0\\ {n_x}{a_x}+{n_y}{a_y}+{n_z}{a_z}&=0\\ {a_x}{o_x}+{a_y}{o_y}+{a_z}{o_z}&=0\\ {n_x}^{2}+{n_y}^{2}+{n_z}^{2}&=1\\ {o_x}^{2}+{o_y}^{2}+{o_z}^{2}&=1\\ {a_x}^{2}+{a_y}^{2}+{a_z}^{2}&=1\\ \end{aligned} \right. \end{equation} $$

解这两个方程,得到的矩阵如下:

$$ \begin{equation} F_1={ \left[ \begin{array}{cccc} 0.707&0&0.707&5\\ 0.707&0&-0.707&3\\ 0&1&0&2\\ 0&0&0&1 \end{array} \right ]} \end{equation}$$或$$\begin{equation}F_2={ \left[ \begin{array}{cccc} -0.707&0&-0.707&5\\ 0.707&0&-0.707&3\\ 0&1&0&2\\ 0&0&0&1 \end{array} \right ]}\end{equation} $$

另外还可以通过求解叉乘的约束条件求得答案:

$$ \begin{vmatrix} \textbf{i} & \textbf{j} & \textbf{k} \\ n_x & n_y & n_z \\ o_x & o_y & o_z \end{vmatrix}=a{_x}i+a{_y}j+0k $$

坐标变换的表示

变化可分为:纯平移绕一个轴的旋转以及平移与旋转的结合三种形式。
纯平移的变换矩阵$T$表示为:

$$ \begin{equation} T={ \left[ \begin{array}{cccc} 1&0&0&d_x\\ 0&1&0&d_y\\ 0&0&1&d_z\\ 0&0&0&1 \end{array} \right ]} \end{equation} $$

其中$d_x$、$d_y$和$d_z$分别是纯平移向量$d$相对于参考坐标系$x$、$y$、$z$轴的三个分量。用符号表示为:

$$ F_new=Trans(d_x,d_y,d_z){\times}F_old $$

5.jpg

纯旋转的变换矩阵根据绕轴的不同而变化,假设其绕参考坐标系的$x$轴旋转,可表示为:

$$ p_{xyz}=Rot(x,\theta){\times}p_{noa} $$

为简化书写,有的教材将$\cos\theta$记为$C\theta$,用$S\theta$表示$\sin\theta$,旋转矩阵表示为:

$$ \begin{equation} Rot(x,\theta)={ \left[ \begin{array}{ccc} 1&0&0\\ 0&C\theta&-S\theta\\ 0&S\theta&C\theta\\ \end{array} \right ]} \end{equation} $$

6.jpg

同理有:

$$ \begin{equation} Rot(y,\theta)={ \left[ \begin{array}{ccc} C\theta&0&S\theta\\ 0&1&0\\ -S\theta&0&C\theta \end{array} \right ]} \end{equation} $$

$$ \begin{equation} Rot(z,\theta)={ \left[ \begin{array}{ccc} C\theta&-S\theta&0\\ S\theta&C\theta&0\\ 0&0&1 \end{array} \right ]} \end{equation} $$

对于坐标变化,可以采用以下的简化写法:

$$ {^U}p={^U}T{_R}{\times}{^R}p $$

对于复合坐标的变换,一定要注意变换的顺序。
当连续变换为左乘该点坐标时,依照的是参考坐标系;当右乘该点坐标是,依照的是其左侧的坐标系(即上一个坐标系)。

[例]假设坐标系$F_{noa}$上的点$(7,3,1)^{T}$经历如下变换,求变换后该点相对于参考坐标系的坐标。

  1. 绕$z$轴旋转$90^\circ$
  2. 接着绕$y$轴旋转$90^\circ$
  3. 接着再平移$[4,-3,7]$

可知变换的矩阵方程为:

$$ p_{xyz}=Trans(4,-3,7)Rot(\gamma,90)Rot(z,90)p_{noa} $$

得:

$$ \begin{equation} p_{xyz}={\left[ \begin{array}{cccc} 1&0&0&4\\ 0&1&0&-3\\ 0&0&1&7\\ 0&0&0&1 \end{array} \right ]}{\times} {\left[ \begin{array}{cccc} 0&0&1&0\\ 0&1&0&0\\ -1&0&0&0\\ 0&0&0&1 \end{array} \right ]}{\times} {\left[ \begin{array}{cccc} 0&-1&0&0\\ 1&0&0&0\\ 0&0&1&0\\ 0&0&0&1 \end{array} \right ]}{\times} {\left[ \begin{array}{c} 7\\ 3\\ 1\\ 1 \end{array} \right ]}={ \left[ \begin{array}{c} 5\\ 4\\ 10\\ 1\\ \end{array} \right ]} \end{equation} $$

相对于旋转坐标系的变换

以上的例子都是相对于固定参考坐标系的,为了计算当前坐标系中点的坐标相对于参考坐标系的变化,需要右乘变换矩阵。
针对上面的例子做相对变换:

  1. 绕$a$轴旋转$90^\circ$
  2. 接着沿$n,o,a$轴平移$[4,-3,7]$。
  3. 接着绕$y$轴旋转$90^\circ$

可知变换的矩阵方程为:

$$ p_{xyz}=Rot(a,90)Trans(4,-3,7)Rot(o,90)p_{noa} $$

$$ \begin{equation} p_{xyz}={ \left[ \begin{array}{c} 0\\ 5\\ 0\\ 1\\ \end{array} \right ]} \end{equation} $$

变换矩阵的逆

7.jpg

机器人运动的路径不是唯一的,一可以通过零件的路径来表示,二是通过机器人的路径来表示:

$$ {^U}T{_E}={^U}T{_R}{^R}T{_H}{^H}T{_E}={^U}T{_P}{^P}T{_E} $$

一般而言,机器人的基座是固定的,所以机器人坐标系$R$相对于全局坐标系$U$的变换${U}^T_{R}$是已知的。此外,末端执行器$E$相对于手坐标系$H$也是已知的(因为末端执行器一般都以一定方式安装在机械手上);
利用传感器、CCD等可以确定零件坐标系$P$对全局坐标系$U$的变换(即零件的定位),因此唯一未知的就是${^R}T_{H}$(机器人手坐标系$H$相对于机器人基座坐标系$R$的变换)。
利用左右乘逆矩阵来进行求解,即:

$$ ({^U}T{_R})^{-1}({^U}T{_R}{^R}T{_H}{^H}T{_E})({^H}T{_E})^{-1}=({^U}T{_R})^{-1}({^U}T{_P}{^P}T{_E})({^H}T{_E})^{-1} $$

即:

$$ {^R}T{_H}={^R}T{_U}{^U}T{_P}{^P}T{_E}{^E}T{_H}={^R}T{_H} $$

对于齐次的$4{\times4}$变换矩阵而言,有以下结论成立:

$$ \begin{equation} T={ \left[ \begin{array}{cccc} n_x&o_x&a_x&p_x\\ n_y&o_y&a_y&p_y\\ n_z&o_z&a_z&p_z\\ 0&0&0&1 \end{array} \right ]} \end{equation}$$,$$\begin{equation} T={ \left[ \begin{array}{cccc} n_x&o_x&a_x&-p{\cdot}n\\ n_y&o_y&a_y&-p{\cdot}o\\ n_z&o_z&a_z&-p{\cdot}a\\ 0&0&0&1 \end{array} \right ]} \end{equation} $$

位置的正逆运动学方程

固连在刚体上的坐标系的原点位置有3个自由度,他可以用3条信息来完全确定。因此,坐标系的原点位置可以用任何常用的坐标来定义。

直角(台架、笛卡尔)坐标:

这种情况下机器人所有的驱动机构都是线性的(比如说液压活塞或线性动力丝杠),由于其不存在旋转运动,所以变换矩阵就是平移变换矩阵,表示如下:

$$ \begin{equation} {^R}T{_p}=T_{cart}(p_x,p_y,p_z)={ \left[ \begin{array}{cccc} 1&0&0&p_x\\ 0&1&0&p_y\\ 0&0&1&p_z\\ 0&0&0&1 \end{array} \right ]} \end{equation} $$

8.jpg

圆柱坐标:

圆柱型坐标包括两个线性平移运动和一个旋转运动,其顺序为先沿$x$移动$r$,再绕$z$轴旋转${\alpha}$,最后沿$z$轴移动$l$,这些变换都是相对于全局参考坐标系进行的。得变换矩阵如下:

$$ \begin{equation} {^R}T{_p}=T_{cyl}(r,{\alpha},l)=Trans(0,0,l)Rot(z,{\alpha})Trans(r,0,0)=\\{ \left[ \begin{array}{cccc} C{\alpha}&-S{\alpha}&0&rC{\alpha}\\ S{\alpha}&C{\alpha}&0&rS{\alpha}\\ 0&0&1&l\\ 0&0&0&1 \end{array} \right ]} \end{equation} $$

注意,算出来的结果必须满足正确的象限。如果$rC{\alpha}$和$rS{\alpha}$都是正的,并且长度$r$也是正的,那么$S{\alpha}$和$C{\alpha}$也都是正的,角度${\alpha}$必须在第一象限。

9.jpg

球坐标
求坐标系统由1个线性运动和2个旋转运动组成,运动顺序为:先沿$z$轴平移$r$,再绕$y$轴旋转${\beta}$和绕$z$轴旋转${\gamma}$。这3个变换建立手坐标系与参考坐标系之间的联系,即:

$$ \begin{equation} {^R}T{_p}=T_{sph}(r,{\beta},{\gamma})=Rot(z,{\gamma})Rot(y,{\beta})Trans(0,0,r)=\\{ \left[ \begin{array}{cccc} C{\beta}C{\gamma}&-S{\gamma}&S{\beta}C{\gamma}&rS{\beta}C{\gamma}\\ C{\beta}C{\gamma}&C{\gamma}&S{\beta}S{\gamma}&rS{\beta}S{\gamma}\\ -S{\beta}&0&C{\beta}&rC{\beta}\\ 0&0&0&1 \end{array} \right ]} \end{equation} $$

Tags:考试机器人
上一篇
下一篇
留言请到 主站