机器人学中经典教材 《Introduction to Robotics: Mechanics and Control》,也就是John Craig的中文版《机器人学导论》,刚来实验室的时候,就发现师兄们人手一本了,某些章节自己啃也是有点难度的,之 前在 Youtube上看完了斯坦福 Oussama Khatib 教授的视频Introduction to Robotics,他们上课使用的教材就是这本,一共十六篇lecture,讲解也是很通俗易懂,涵盖了机器人坐标变化、D-H参数建模、动力学、 运动学、PD、PID控制、力控制等基本理论。 上交大佬曾今说过:" 如果你把这本书的内容掌握了,就已经超过实验室绝大多数师兄师姐了。然而,真正把教材啃下来的并不多。所以,我在这里要换个说法了,如果你把这本书的内容掌握了,就可以胜任国 内绝大多数机器人公司的开发工作了。" https://qiu6401.gitbook.io/how-to-learn-robotics/gettingstarted   这里对十六篇讲座的基本内容做了个简单的概括,可以根据需求快速的找到对应的内容。

The first lecture:

[40:50]:So if you have a velocity and omega at the center of mass,and you can write the energy,the kinetic energy,associated with this moving mass and inertia associated with the rigid.And simply by adding the kinetic energy of these different link,you have the total kinetic energy of the system.So the mass matrix will become a very simple form of the Jacobian,so that's why I'm going to insist on your understanding of the Jacobian,once you understand the Jacobian,,you can scale the Jacobian with the masses and the inetials get your dynamics.So going to dynamics is going to be very simple if after you really undertand the Jacobian. [43:54]:Task-Oriented Control: Described as how to move the hand to this location without really focusing on how each of the joint is going to move.And this concept can be captured by simply thinking about total robot as if the robot was attracted to move the goal position.This is similiar to the way a human operate just like you are not thinking about how the joints of the body are moving,you are just moving the hand by applying these forces to move the hand to the goal position.So it's like holding the hand and pulling it down to the goal.第一篇lecture就是对课程的一个总结,其实就是这十六篇的学习重点:一个是雅可比矩阵的理 解和计算;另一个就是机器人的控制问题,包括PD control和force control等等话题。出现在视频中的时间为[40:50]和[43:54]。

The second lecture:

通篇介绍的就是机器人不同坐标系之间变换的方法,即旋转矩阵R和变换矩阵T。 Rotation matrix:是在乘以一个向量的时候改变向量的方向但不改变大小的效果并保持了手性的矩阵。其实旋转矩阵可以直接写出来,其值\{B\}为中单位矩阵  在\{A\}中的坐标,如式$ ^A_BR = [^AX_B,^AY_B,^AZ_B] $,旋转矩阵的转置就是从相反的方向观 察,因此$^A_BR = ^B_AR^T = ^B_AR^{-1}$。对于坐标系原点重合的情况下:设坐标系\{B\}中的点$^BP$,那么它在参考坐标系\{A\}中的点表示为 $^AP = ^A_BR^BP $。 对于坐标系原点不重合的情况下,例如对于坐标系\{B\}中的向量在参考坐标系\{A\}中的表示为:$^AP_{O_A} =^AP_{O_B} + ^AP_{BORG}$。因此$^AP = ^A_BR^BP+^AP_{BORG0}$,这里涉及到加法等操作对于高纬度空间运用是比较复杂的,但是写成矩阵的形式就是$$\left[ \begin{array}{c}^AP\\1\\\end{array} \right ] = \left[ \begin{array}{cc}^A_BR & ^AP_{BORG}\\O & 1\end{array} \right ] \left[ \begin{array}{c}^BP\\1\\\end{array} \right ]$$,这就是从传说中的$$T = \left[ \begin{array}{cc}R& P_{ORB}\\\end{array} \right ]$$ 其中就是\{B\}原点在坐标系\{A\}中的坐标。 对于变换矩阵T,它没有和旋转矩阵R相同的转置求逆等同的特性,也就是$ T^{-1}!= T^{T} $,而是$$ ^A_BT^{-1} = ^B_AT = \left[ \begin{array}{cc}^A_BR^T & -^A_BR^T.^AP_{BORG}\\O & 1\end{array} \right ] $$。这里的$ -^A_BR^T.^AP_{BORG}=^BP_{AORG} $.

The third lecture:

旋转矩阵用9个参数来定义三维度的旋转,这意味着有六个参数其实是冗余的,对于一个旋转矩阵R = \left[\begin{array}{ccc}r_1 & r_2 & r_3\\\end{array} \right ]来说有如下关系:$$ |r1|=|r2|=|r3|=1$$$$ r1r2=r2r3=r3r1=0 $$。 对于欧拉角定义的旋转ZYX,有个特定的昵称rpy,也就是使用广泛的roll-pitch-yaw ,其中ZYX欧拉角和旋转矩阵的对应关系为:$$ ^A_BR = R_Z(\alpha).R_Y(\beta).R_Z(\gamma) $$。 即为:$$ ^A_BR= \left[\begin{array}{ccc}ca & -sa & 0\\sa & ca & 0\\0 & 0 & 1\\\end{array} \right ] \left[\begin{array}{ccc}cb & 0 & sb\\0 & 1 & 0\\sb & 0 & cb\\\end{array} \right ] \left[\begin{array}{ccc}1 & 0 & 0\\0 & c\gamma & -s\gamma\\0 & s\gamma & c\gamma\\\end{array} \right ]$$.   当beta角度为90的时候,会导致机器人空间的奇异性,在该点的时候,无论如何改变其余两个角度的大小度无法影响该方向的运动。也就是说三个参数会有奇异性,九个参数会有冗余,因此引出使用四个参数定义 旋转的四元数。(有点多,没记录了)

The fourth lecture:

配置D-H参数理论部分,由于之前已经了解过D-H参数配置的方法,这节比较快速过的。老师讲的也是不错的,但是英文理解肯定难受一点,所以也就没记录了。

The fifth lecture:

D-H参数配置案例:RPRR机器人,根据配置的D-H参数和公式,对于RPRR机器人,有:   $$ ^0_1T = \left[\begin{array}{cccc} c_1 & -s_1 & 0 & 0\\ s_1 & c_1 & 0 & 0\\ 0 & 0 & 1 & 0\\ 0 & 0 & 0 & 1\\ \end{array} \right ]$$   其中第三列$ [0,0,1]^T $表示的就是$z_0$在frame0中坐标,同理前两列分别对应$x_0$$y_0$在在frame0中的坐标,最后一列就是frame3的原点在frame1中的坐标。   $$ ^0_2T = \left[\begin{array}{cccc} c_1c_2 & -c_1s_2 & -s_1 & -s_1d_2\\ s_1c_2 & -s_1s_2 & c_1 & c_1d_2\\ -s_2 & -c_2 & 0 & 0\\ 0 & 0 & 0 & 1\\ \end{array} \right ]$$   其中第三列$ [-s_1,c_1,0]^T $表示的就是$z_1$在frame0中坐标,同理。。。。。这里需要重点关注的就是向量,因为后面可以看到Jacobian的一半就是通过z向量定义的,$z_1,z_2...z_{end}$ in the frame0。

The sixth lecture:

6.1 雅可比矩阵计算

Jacobian参数配置:设各个关节运动的矢量为$q=(q_1q_1...q_n)^T$,对于旋转关节和滑块关节有所不同,通常会给定一个参数为0或1来代表prismatic还是revolute(旋转关节还是滑动关节),也就是后面提到的 。 Jacobian的其含义就是将Cartesian space和joint space联系起来的方法。通过对$q=(q_1q_1...q_n)^T$依次逐个求偏导,可以导出$ \delta x$$ \delta q $的关系如下:   $$ \delta x=\left[\begin{array}{ccc}{\partial f_1}/{\partial q_1} & ...& {\partial f_1}/{\partial q_n} \\... & ... & ....\\ {\partial f_m}/{\partial q_1} & ...& {\partial f_m}/{\partial q_n} \end{array} \right ]\delta q$$   也就是$ \delta x_{m \times 1}=J_{m \times n}(q)\delta q_{n \times 1} $,下面通过一个简单的例子来呈现如何计算机器人的Jacobian矩阵:     事实上,这个矩阵在机器人当中的应用十分广泛,当想要控制机器人末端进行微小的位移的时候,我们就可以利用Jacobian的逆来计算.  

6.2 利用D-H计算雅可比矩阵

对于变换矩阵T来说,它具有两个部分,一部分是最后一列的表示的坐标,另一部分是旋转矩阵R,因此对于Jacobian来说也有两部分,一部分是Position,另一部分是Orientation,通过下例来进行分析:如图所示 是机器人的D-H 参数,和我们自己设计的球手腕型机器人很类似(仅仅多了一个d):     根据D-H参数可以得到机器人的变换矩阵,结合前面的知识,变换矩阵  的每列所代表的意思,将矩阵写成T = \left[\begin{array}{cccc} r_1 & r_2 & r_3 & x_p \\ 0 & 0 & 0 & 1\end{array} \right ],因此将Jacobian的待求式准备为:x = \left[\begin{array}{c}x_p \\r_1 \\r_2 \\r_3\end{array} \right ] 对于Position部分和Orientation部分的计算结果如下,这里的第一列求偏导计算之后就是,不用纠结。   看到最后应该就能理解为什么Jacobian和X_P , X_R有关并通过上面的这些方法来计算了!\dot x_{P} = J_{X_P}(q) \dot q $和$ \dot x_{R} = J_{X_R}(q) \dot q,写成矩阵形式即:$$ \left[\begin{array}{c} \dot x_{P} \\ \dot x_{R} \end{array} \right ] = \left[\begin{array}{c} J_{X_P}(q) \\ J_{X_R}(q) \end{array} \right ] \dot q$$ .

6.3 雅可比和速度角度的联系

当完全了解了Jacobian的组成之后,就可以通过Jacobian将各个关节的角度和末端执行器中心的速度角速度联系起来,如下图所示,将用和替换:     这里提到的很重要的一点是,角速度是instantaneous,如果我们采用欧拉角$\alpha, \beta , \gamma$或是\dot{\alpha},\dot{\beta},\dot{\gamma},它们和是不相等的。而是通过一个3x3的矩阵与$ \omega$联系起来的。如上图所示,对于用欧拉角表示的 \dot x_R 我们用一个3x3的矩 阵将它和  $ \omega $联系起来。对于笛卡尔坐标系的坐标表示的\dot x_P  ,我们用一个3x3的矩阵 E_R(x_R)将它和 $ v $ 联系起来。因此我们能得到末端(\dot x_R ,\dot x_P)\dot q 之间的转换关系。 虽然和之间不是线性的关系,但是在笛卡尔坐标系下$ v $\dot x_P是线性的关系,所以很容易就得到了E_P(x_p) = \left[\begin{array}{ccc} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{array} \right ]。视频中直接给了E_R,省的以后自己算了:E_R(x_R) = \left[\begin{array}{ccc} -\frac{s \alpha c \beta}{s \beta} & \frac{c \alpha c \beta}{s \beta} & 1 \\ c\alpha & s\alpha & 0 \\ \frac{s\alpha}{s\beta} & -\frac{c\alpha}{s\beta} & 0 \end{array} \right ]   一般笛卡尔坐标系的雅可比和坐标有关,所以将这里的Jacobian命名为,其和速度空间的雅可比矩阵(我自己的理解不知道准不准确)的关系如下所示:$$ J_x(q) = E(x)J_0(q) $$$$ \left[\begin{array}{c} v \\ \omega \end{array} \right ] = J_0(q)\dot q$$,总结如下: 对于笛卡尔坐标系,根据前面提到的可用知道E_p = I ,当使用的不是笛卡尔坐标的时候,需要如下转换关系,方便的是,只需要记住该公式即可,不需要重复的去计算   可以看出,当使用三个参数来描述旋转的欧拉角,当$\beta$处于某些值的时候,就会导致奇异性。 ———————————————— 版权声明:本文为CSDN博主「合工大机器人实验室」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/qq_34935373/article/details/106674843