机器人学导论(第四版)学习笔记——第二章

  • 2. 空间描述和变换
    • 2.1 引言
    • 2.2 描述:位置、姿态与位姿
    • 2.3 映射:从一个坐标系到另一个坐标系的变换
    • 2.4 算子:平行,旋转和变换
    • 2.5 总结和说明
    • 2.6 变换的计算
    • 2.7 变换方程
    • 2.8 其他姿态描述方法
    • 2.9 自由矢量的变换
    • 2.10 计算问题

2. 空间描述和变换

2.1 引言

定义坐标系并给出表示规则,是描述零件、工具、机构位置和姿态的基础。
世界坐标系是所有坐标系的参考和基础。

2.2 描述:位置、姿态与位姿

位置 + 姿态 = 位姿

位置描述: 3x1的矢量可以描述坐标系中任一点的位置。
用三个相互正交的带有箭头的单位矢量表示坐标系{A}。
用一个矢量表示P点,等价于空间中的一个位置,亦可以用一组有序的3个数来表示。
AP=(PxPyPz)^AP = \left( \begin{matrix} P_x\\ P_y\\ P_z \end{matrix} \right)AP=⎝⎛​Px​Py​Pz​​⎠⎞​

姿态描述: 我们在物体上固定一个坐标系(连体坐标系),给出此坐标系相对于参考坐标系的描述,用来表达该物体的姿态。
连体坐标系{B},参考坐标系{A}。X^B\widehat X_BXB​,Y^B\widehat Y_BYB​,Z^B\widehat Z_BZB​表示坐标系{B}主轴方向的3各单位矢量。当以{A}为参考坐标系时,3个单位矢量可以写作:AX^B^A\widehat X_BAXB​,AY^B^A\widehat Y_BAYB​,AZ^B^A\widehat Z_BAZB​。且将3个矢量按顺序排列成组成一个3x3的矩阵,即为旋转矩阵。
BAR=(X^BY^BZ^B)=(r11r12r13r21r22r23r31r32r33)^A_BR = \left( \begin{matrix} \widehat X_B & \widehat Y_B & \widehat Z_B \end{matrix}\right) =\left(\begin{matrix} r_{11} & r_{12} & r_{13}\\ r_{21} & r_{22} & r_{23}\\ r_{31} & r_{32} & r_{33}\\ \end{matrix}\right)BA​R=(XB​​YB​​ZB​​)=⎝⎛​r11​r21​r31​​r12​r22​r32​​r13​r23​r33​​⎠⎞​

其中rijr_{ij}rij​可用每个矢量在参考坐标系中轴线方向上的投影分量来表示。于是BAR^A_BRBA​R中各分量可用一堆单位矢量的点积来表示:
BAR=(AX^BAY^BAZ^B)=(X^B∙X^AY^B∙X^AZ^B∙X^AX^B∙Y^AY^B∙Y^AZ^B∙Y^AX^B∙Z^AY^B∙Z^AZ^B∙Z^A)^A_BR = \left(\begin{matrix} ^A\widehat X_B & ^A\widehat Y_B & ^A\widehat Z_B \end{matrix}\right) =\left(\begin{matrix} {\widehat X_B} \bullet {\widehat X_A} & {\widehat Y_B} \bullet {\widehat X_A} & {\widehat Z_B} \bullet {\widehat X_A}\\ {\widehat X_B} \bullet {\widehat Y_A} & {\widehat Y_B} \bullet {\widehat Y_A} & {\widehat Z_B} \bullet {\widehat Y_A}\\ {\widehat X_B} \bullet {\widehat Z_A} & {\widehat Y_B} \bullet {\widehat Z_A} & {\widehat Z_B} \bullet {\widehat Z_A}\\ \end{matrix}\right)BA​R=(AXB​​AYB​​AZB​​)=⎝⎛​XB​∙XA​XB​∙YA​XB​∙ZA​​YB​∙XA​YB​∙YA​YB​∙ZA​​ZB​∙XA​ZB​∙YA​ZB​∙ZA​​⎠⎞​

上式中点积形式表示中无左上标,意味着可以选择任何坐标系下的表示。
点积可以得到夹角余弦,所以旋转矩阵中各分量常被称作方向余弦。
进一步观察,看出矩阵行是{A}中单位矢量在{B}中的表达,即:

BAR=(AX^BAY^BAZ^B)=(BX^ATBY^ATBZ^AT)^A_BR = \left(\begin{matrix} ^A\widehat X_B & ^A\widehat Y_B & ^A\widehat Z_B\\ \end{matrix}\right) = \left(\begin{matrix} ^B\widehat X_A^T \\ ^B\widehat Y_A^T \\ ^B\widehat Z_A^T\\ \end{matrix}\right)BA​R=(AXB​​AYB​​AZB​​)=⎝⎛​BXAT​BYAT​BZAT​​⎠⎞​

因此,ABR^B_ARAB​R为坐标系{A}对{B}的描述,可用{B}相对于{A}的描述的旋转矩阵的转置来得到,即:

BAR=ABRT^A_BR = ^B_AR^TBA​R=AB​RT

上式表明旋转矩阵的逆矩阵等于其转置。简单证明如下:

BART∙BAR=(AX^BTAY^BTAZ^BT)(AX^BAY^BAZ^B)=I3^A_BR^T \bullet ^A_BR = \left(\begin{matrix} ^A\widehat X_B^T \\ ^A\widehat Y_B^T \\ ^A\widehat Z_B^T\\ \end{matrix}\right)\left(\begin{matrix} ^A\widehat X_B & ^A\widehat Y_B & ^A\widehat Z_B\\ \end{matrix}\right) = I_3BA​RT∙BA​R=⎝⎛​AXBT​AYBT​AZBT​​⎠⎞​(AXB​​AYB​​AZB​​)=I3​

其中,I3I_3I3​是3x3的单位矩阵。因此BAR=ABR−1=ABRT^A_BR = ^B_AR^{-1} = ^B_AR^TBA​R=AB​R−1=AB​RT。实际上,由线性代数知识,正交矩阵的逆必然等于它的转置。

位姿描述: 一般选取连体坐标系原点来描述位置。
四个矢量一组描述了位置和姿态信息(三个姿态,一个位置)。

{B}={BAR,APBORG}\{B\} = \{^A_BR, ^AP_{BORG}\}{B}={BA​R,APBORG​}

位姿可用任意两个坐标系的相对关系来描述。当旋转矩阵为单位矩阵时,为平移;当位置矢量是零矢量时,为纯旋转。

2.3 映射:从一个坐标系到另一个坐标系的变换

在不同坐标系中表达同一个量,即为映射。

串联机械臂的关节数一般等于自由度数。

坐标平移: 已知BP^BPBP,而且{B}与{A}的关系为平移,APBORG^AP_{BORG}APBORG​表示{B}中原点在{A}中的位置。那么P点在{A}中的位置可以表述为AP=BP+APBORG^AP = ^BP + ^AP_{BORG}AP=BP+APBORG​。只有上述简单平移可以相加,需强调的是P点本身并没有任何变化,只是它的描述改变了。这样,就可以说APBORG^AP_{BORG}APBORG​定义了一个映射,因为它包含了变换所需的信息。

坐标旋转: BAR^A_BRBA​R的各列是{B}的单位矢量在{A}中的描述;各行是{A}的单位矢量在{B}中的描述。即:

BAR=(AX^BAY^BAZ^B)=(BX^ATBY^ATBZ^AT)^A_BR = \left(\begin{matrix} ^A\widehat X_B & ^A\widehat Y_B & ^A\widehat Z_B\\ \end{matrix}\right) = \left(\begin{matrix} ^B\widehat X_A^T \\ ^B\widehat Y_A^T \\ ^B\widehat Z_A^T\\ \end{matrix}\right)BA​R=(AXB​​AYB​​AZB​​)=⎝⎛​BXAT​BYAT​BZAT​​⎠⎞​

如果只有纯旋转,为了计算AP^APAP,各分量可用预期单位矢量的点积来计算。即:

Apx=BX^A∙BPApy=BY^A∙BPApz=BZ^A∙BP\begin{gathered} ^Ap_x = {^B\widehat X_A} \bullet {^BP} \\ ^Ap_y = ^B\widehat Y_A \bullet ^BP \\ ^Ap_z = ^B\widehat Z_A \bullet ^BP \end{gathered}Apx​=BXA​∙BPApy​=BYA​∙BPApz​=BZA​∙BP​

上式可用旋转矩阵简化为A=BAR∙BP^A = {^A_BR}\bullet{^BP}A=BA​R∙BP。此处注意角标的消去规则,前一个的左下标与后一个的左上标相同时消掉。

一般变换: 既有平移,又有旋转。平移:APBORG^AP_{BORG}APBORG​;旋转:BAR^A_BRBA​R。此时,P在{B}中的描述为BP^BPBP,求AP^APAP。

借助一个中间坐标系,与{A}姿态相同,原点与{B}重合,则先旋转再平移即可得到:
AP=BARBP+APBORG^AP = ^A_BR^BP + ^AP_{BORG}AP=BA​RBP+APBORG​
上式转换成矩阵算子的形式,表达更为简洁:AP=BATBP^AP = ^A_BT^BPAP=BA​TBP,即:
(AP1)=(BARAPBORG0001)\left(\begin{matrix}^AP\\1\end{matrix}\right)=\left(\begin{matrix} {}&{{}_B^AR}&{}&^AP_{BORG}\\ 0&0&0&1\\ \end{matrix}\right)(AP1​)=(0​BA​R0​0​APBORG​1​)

这里借用了4x4的算子形式,并将位置矢量增广成4x1,4x4的算子中增加了一行(0 0 0 1)。这个4x4的矩阵被称为齐次变换矩阵。用一个简单的形式同时表达了旋转和平移。

旋转矩阵定义姿态,二变换矩阵顶一个坐标系。坐标系{B}相对于坐标系{A}的描述为BAT^A_BTBA​T。

2.4 算子:平行,旋转和变换

算子:用于坐标系间点的映射的通用数学表达式。包括点的平移算子、矢量旋转算子,以及平移加旋转的算子。

平移算子: 矢量AP1^AP_1AP1​通过矢量AQ^AQAQ进行平移,得到AP2^AP_2AP2​,则AP2=AP1+AQ^AP_2=^AP_1+^AQAP2​=AP1​+AQ。用矩阵算子的形式进行表达:AP2+DQ(q)AP1^AP_2+D_{Q(q)}^AP_1AP2​+DQ(q)A​P1​。其中:

DQ(q)=(100qx010qy001qz0001)D_{Q(q)}=\left(\begin{matrix} 1&0&0&q_x\\ 0&1&0&q_y\\ 0&0&1&q_z\\ 0&0&0&1\\ \end{matrix}\right)DQ(q)​=⎝⎜⎜⎛​1000​0100​0010​qx​qy​qz​1​⎠⎟⎟⎞​

qqq是沿着矢量Q^\widehat QQ​方向平移的数量。qx,qy,qzq_x, q_y, q_zqx​,qy​,qz​是平移矢量的分量。q=qx2+Qy2+qz2q=\sqrt{q_x^2+Q_y^2+q_z^2}q=qx2​+Qy2​+qz2​​。矢量平移与坐标变换之间可能存在一个符号差异。

旋转算子: AP1^AP_1AP1​用旋转矩阵RRR变换成了aP2^aP_2aP2​,则有AP2=R∙AP1^AP_2=R\bullet{^AP_1}AP2​=R∙AP1​。同样以矩阵算子形式进行表达:AP2=RK(θ)AP1^AP_2=R_{K(\theta)}{^AP_1}AP2​=RK(θ)​AP1​,意味着绕K^\hat KK^轴旋转了θ\thetaθ角。且当绕ZZZ轴旋转时,有:

RZ(θ)=(cos⁡θ−sin⁡θ00sin⁡θcos⁡θ0000100001)R_{Z(\theta)}=\left(\begin{matrix} \cos\theta & -\sin\theta & 0 & 0\\ \sin\theta & \cos\theta & 0 &0\\ 0 & 0 & 1 & 0\\ 0 & 0 & 0 & 1\\ \end{matrix}\right)RZ(θ)​=⎝⎜⎜⎛​cosθsinθ00​−sinθcosθ00​0010​0001​⎠⎟⎟⎞​

**变换算子:**将平移和旋转归一化后,则变换算子TTT将AP1^AP_1AP1​平移加旋转得到AP2^AP_2AP2​,则:
AP2=T∙AP1^AP_2=T\bullet {^AP_1}AP2​=T∙AP1​

2.5 总结和说明

齐次变换矩阵的三种解释:

  1. 位姿的描述,表示相对于{A}的{B}的描述,BAR^A_BRBA​R的各列是{B}中三轴的单位矢量,APBORG^AP_{BORG}APBORG​是{B}的元原点。
  2. 是变换映射,BAT^A_BTBA​T是映射,将统一点P从BP^BPBP映射到AP^APAP。
  3. 是变换算子,T是将AP1^AP_1AP1​变换为AP2^AP_2AP2​。

2.6 变换的计算

主要指的是变换的乘法和变换的逆运算。

复合变换:
BP=CBT∙CP^BP=^B_CT\bullet{^CP}BP=CB​T∙CP,AP=BAT∙BP^AP=^A_BT\bullet{^BP}AP=BA​T∙BP,则AP=BAT∙CBT∙CP^AP=^A_BT\bullet ^B_CT \bullet ^CPAP=BA​T∙CB​T∙CP。即:

CAT=BAT∙CBT=(BARCBRBARBPCORG+APBORG0001)^A_CT=^A_BT \bullet ^B_CT=\left(\begin{matrix} {} & ^A_BR^B_CR & {} & ^A_BR^BP_{CORG}+^AP_{BORG}\\ 0 & 0 & 0 & 1\\ \end{matrix}\right)CA​T=BA​T∙CB​T=(0​BA​RCB​R0​0​BA​RBPCORG​+APBORG​1​)

逆变换: 已知{B}相对于{A}的变换为BAT^A_BTBA​T,求{A}相对于{B}的变换ABT^B_ATAB​T。

利用旋转矩阵的性质ABR=BART^B_AR=^A_BR^TAB​R=BA​RT

APBORG^AP_{BORG}APBORG​在{B}中的描述为:

B(APBORG)=ABR∙APBORG+BPAORG^B(^AP_{BORG})=^B_AR \bullet ^AP_{BORG}+^BP_{AORG}B(APBORG​)=AB​R∙APBORG​+BPAORG​

由于上式即是{B}的原点在{B}中的描述,即应为零,所以:

BPAORG=−ABR∙APBORG^BP_{AORG}=-^B_AR \bullet ^AP_{BORG}BPAORG​=−AB​R∙APBORG​

即可将ABT^B_ATAB​T写成:

ABT=(BART−ABR∙APBORG0001)^B_AT=\left(\begin{matrix} {} & ^A_BR^T & {} & -^B_AR \bullet ^AP_{BORG}\\ 0 & 0 & 0 & 1\\ \end{matrix}\right)AB​T=(0​BA​RT0​0​−AB​R∙APBORG​1​)

2.7 变换方程

可通过等式两边左/右乘逆矩阵的方法进行各种求解。

2.8 其他姿态描述方法

旋转矩阵是各列正交的单位矩阵,其行列式的值为1,即标准正交矩阵。
任何3x3旋转矩阵都可用3各参数来确定,即旋转矩阵中的9个分量并不是完全独立的。
旋转不满足交换律,即旋转的次序不同,则结果不同。
其他常用描述方法有:
X-Y-Z固定角: 绕固定的参考坐标系的轴依次旋转。
Z-Y-X欧拉角: 绕运动坐标系的各轴依次旋转。
Z-Y-Z欧拉角: 与上一个方法类似。
等效角度-轴线表示法: 绕K轴旋转一定角度,RK(θ)R_{K(\theta)}RK(θ)​表示。
欧拉参数法: 以4个数值来表达姿态。

2.9 自由矢量的变换

矢量相等:有相同的维数、大小和方向。
矢量等效:在某一功能上产生了相同的效果。

线矢量:与作用线有关的矢量。
自由矢量:可能出现在空间任意位置的矢量。

2.10 计算问题

利用一些性质可减少计算次数。

[1]: John J. Craig, 贠超. 机器人学导论[M]. 机械工业出版社, 2006.

机器人导论(第四版)学习笔记——第二章相关推荐

  1. 《Spring实战》第四版读书笔记 第二章 装配Bean

    2019独角兽企业重金招聘Python工程师标准>>> 在Spring中,对象无需自己查找或创建与其所关联的其他对象.相反,容器负责把需要相互协作的对象引用赋予各个对象. 创建应用对 ...

  2. 视觉SLAM十四讲学习笔记-第二讲-开发环境搭建

    专栏系列文章如下: 视觉SLAM十四讲学习笔记-第一讲_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习笔记-第二讲-初识SLAM_goldqiu的博客-CSDN博客 ​​​​​​​ lin ...

  3. 《Real-Time Rendering》第四版学习笔记——Chapter 9 Physically Based Shading(一)

    一.光的物理特性 光与物体的交互形成了基于物理着色的基础. 在物理层面上,光的模型为电磁横波.每个波都有一个单一的波长λ\lambdaλ.具有单一波长的光叫单色光(monochromatic ligh ...

  4. 《Real-Time Rendering》第四版学习笔记——Chapter 9 Physically Based Shading(二)

    上接文章:<Real-Time Rendering>第四版学习笔记--Chapter 9 Physically Based Shading(一) 六.微观几何 每个可见的表面点都包含了很多 ...

  5. 《Real-Time Rendering》第四版学习笔记——Chapter 9 Physically Based Shading(三)

    前文: <Real-Time Rendering>第四版学习笔记--Chapter 9 Physically Based Shading(一) <Real-Time Renderin ...

  6. 《Go语言圣经》学习笔记 第二章 程序结构

    Go语言圣经学习笔记 第二章 程序结构 目录 命名 声明 变量 赋值 类型 包和文件 作用域 注:学习<Go语言圣经>笔记,PDF点击下载,建议看书. Go语言小白学习笔记,几乎是书上的内 ...

  7. 小吴的《机器学习 周志华》学习笔记 第二章 2.4 比较检验、2.5 偏差与方差

    小吴的<机器学习 周志华>学习笔记 第二章 2.4 比较检验. 2.5 偏差与方差 2.4 比较检验 上一周提到了实验的评价方法和性能量度,步骤简单可以看成:先使用某种实验评估方法测得学习 ...

  8. PhalAPI学习笔记 ——— 第二章接口服务请求

    PhalAPI学习笔记 --- 第二章接口服务请求 前言 接口服务请求 接口服务请求案例 自定义接口路由 开启匹配路由 配置路由规则 nginx apache 服务请求 结束语 前言 公司业务需要转学 ...

  9. [go学习笔记.第二章] 2.go语言的开发工具以及安装和配置SDK

    一.工具介绍: 1.Visual Studio Code 一个运行于Mac,Windows,和linux上的,默认提供Go语言的语法高亮的IED,可以安装Go语言插件,还可以支持智能提示,编译运行等功 ...

最新文章

  1. 2021年大数据Flink(三十九):​​​​​​​Table与SQL ​​​​​​总结 Flink-SQL常用算子
  2. 连接php的作用是什么,什么是超链接,有什么作用
  3. Android图片颜色比例,Android开发学习之路-图片颜色获取器开发(1)
  4. Python的流程控制 - for序列
  5. File Explore 中data权限修改,实体机
  6. 使用 SQL 语句从数据库一个表中随机获取一些数据
  7. CrazyDiskInfo硬盘检测工具 安装记录
  8. java随机数排序算法_理解快速排序算法
  9. 无法连接上 cn.archive.ubuntu.com:80 (123.129.214.98)。 - connect (111: 拒绝连接)
  10. python中的类属性和实例属性
  11. 磁盘文件的正常读写与异步读写
  12. PTA c语言 求幂级数展开的部分和
  13. 解读Linux命令格式
  14. go语言 select
  15. Android 自定义下拉框的实现 Spinner
  16. 浸会大学推中药材图像数据库
  17. 使用xlsx.core.min.js进行导入(表格)导出(Excel)功能
  18. linux系统pyodbc安装与使用教程
  19. Pointnet网络结构与代码解读
  20. java 反射机制中的 Filed (属性反射机制)

热门文章

  1. 腾讯服务器漏洞修复,腾讯安全玄武实验室提交Apache Dubbo高危漏洞,官方已发布修复版本...
  2. 高通mm-camera_vendor
  3. 虚拟机Oracle BIEE下载
  4. vue3+ts校验不通过问题
  5. 王道考研系列:计算机组成原理
  6. 《Spring揭秘》读书笔记 1:IoC容器
  7. 第三章 生产要素市场
  8. java生成32位流水号,Java生成流水号
  9. 微型计算机原理及应用马义德,微型计算机原理及应用.doc
  10. QT5 / opencv / vs2013中文汉字无法显示(显示问号)