机器人导论(第四版)学习笔记——第二章
机器人学导论(第四版)学习笔记——第二章
- 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=⎝⎛PxPyPz⎠⎞
姿态描述: 我们在物体上固定一个坐标系(连体坐标系),给出此坐标系相对于参考坐标系的描述,用来表达该物体的姿态。
连体坐标系{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)BAR=(XBYBZB)=⎝⎛r11r21r31r12r22r32r13r23r33⎠⎞
其中rijr_{ij}rij可用每个矢量在参考坐标系中轴线方向上的投影分量来表示。于是BAR^A_BRBAR中各分量可用一堆单位矢量的点积来表示:
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)BAR=(AXBAYBAZB)=⎝⎛XB∙XAXB∙YAXB∙ZAYB∙XAYB∙YAYB∙ZAZB∙XAZB∙YAZB∙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)BAR=(AXBAYBAZB)=⎝⎛BXATBYATBZAT⎠⎞
因此,ABR^B_ARABR为坐标系{A}对{B}的描述,可用{B}相对于{A}的描述的旋转矩阵的转置来得到,即:
BAR=ABRT^A_BR = ^B_AR^TBAR=ABRT
上式表明旋转矩阵的逆矩阵等于其转置。简单证明如下:
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_3BART∙BAR=⎝⎛AXBTAYBTAZBT⎠⎞(AXBAYBAZB)=I3
其中,I3I_3I3是3x3的单位矩阵。因此BAR=ABR−1=ABRT^A_BR = ^B_AR^{-1} = ^B_AR^TBAR=ABR−1=ABRT。实际上,由线性代数知识,正交矩阵的逆必然等于它的转置。
位姿描述: 一般选取连体坐标系原点来描述位置。
四个矢量一组描述了位置和姿态信息(三个姿态,一个位置)。
{B}={BAR,APBORG}\{B\} = \{^A_BR, ^AP_{BORG}\}{B}={BAR,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_BRBAR的各列是{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)BAR=(AXBAYBAZB)=⎝⎛BXATBYATBZAT⎠⎞
如果只有纯旋转,为了计算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=BAR∙BP。此处注意角标的消去规则,前一个的左下标与后一个的左上标相同时消掉。
一般变换: 既有平移,又有旋转。平移:APBORG^AP_{BORG}APBORG;旋转:BAR^A_BRBAR。此时,P在{B}中的描述为BP^BPBP,求AP^APAP。
借助一个中间坐标系,与{A}姿态相同,原点与{B}重合,则先旋转再平移即可得到:
AP=BARBP+APBORG^AP = ^A_BR^BP + ^AP_{BORG}AP=BARBP+APBORG
上式转换成矩阵算子的形式,表达更为简洁:AP=BATBP^AP = ^A_BT^BPAP=BATBP,即:
(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)=(0BAR00APBORG1)
这里借用了4x4的算子形式,并将位置矢量增广成4x1,4x4的算子中增加了一行(0 0 0 1)。这个4x4的矩阵被称为齐次变换矩阵。用一个简单的形式同时表达了旋转和平移。
旋转矩阵定义姿态,二变换矩阵顶一个坐标系。坐标系{B}相对于坐标系{A}的描述为BAT^A_BTBAT。
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)AP1。其中:
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)=⎝⎜⎜⎛100001000010qxqyqz1⎠⎟⎟⎞
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θ0000100001⎠⎟⎟⎞
**变换算子:**将平移和旋转归一化后,则变换算子TTT将AP1^AP_1AP1平移加旋转得到AP2^AP_2AP2,则:
AP2=T∙AP1^AP_2=T\bullet {^AP_1}AP2=T∙AP1
2.5 总结和说明
齐次变换矩阵的三种解释:
- 位姿的描述,表示相对于{A}的{B}的描述,BAR^A_BRBAR的各列是{B}中三轴的单位矢量,APBORG^AP_{BORG}APBORG是{B}的元原点。
- 是变换映射,BAT^A_BTBAT是映射,将统一点P从BP^BPBP映射到AP^APAP。
- 是变换算子,T是将AP1^AP_1AP1变换为AP2^AP_2AP2。
2.6 变换的计算
主要指的是变换的乘法和变换的逆运算。
复合变换:
BP=CBT∙CP^BP=^B_CT\bullet{^CP}BP=CBT∙CP,AP=BAT∙BP^AP=^A_BT\bullet{^BP}AP=BAT∙BP,则AP=BAT∙CBT∙CP^AP=^A_BT\bullet ^B_CT \bullet ^CPAP=BAT∙CBT∙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)CAT=BAT∙CBT=(0BARCBR00BARBPCORG+APBORG1)
逆变换: 已知{B}相对于{A}的变换为BAT^A_BTBAT,求{A}相对于{B}的变换ABT^B_ATABT。
利用旋转矩阵的性质ABR=BART^B_AR=^A_BR^TABR=BART
APBORG^AP_{BORG}APBORG在{B}中的描述为:
B(APBORG)=ABR∙APBORG+BPAORG^B(^AP_{BORG})=^B_AR \bullet ^AP_{BORG}+^BP_{AORG}B(APBORG)=ABR∙APBORG+BPAORG
由于上式即是{B}的原点在{B}中的描述,即应为零,所以:
BPAORG=−ABR∙APBORG^BP_{AORG}=-^B_AR \bullet ^AP_{BORG}BPAORG=−ABR∙APBORG
即可将ABT^B_ATABT写成:
ABT=(BART−ABR∙APBORG0001)^B_AT=\left(\begin{matrix} {} & ^A_BR^T & {} & -^B_AR \bullet ^AP_{BORG}\\ 0 & 0 & 0 & 1\\ \end{matrix}\right)ABT=(0BART00−ABR∙APBORG1)
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.
机器人导论(第四版)学习笔记——第二章相关推荐
- 《Spring实战》第四版读书笔记 第二章 装配Bean
2019独角兽企业重金招聘Python工程师标准>>> 在Spring中,对象无需自己查找或创建与其所关联的其他对象.相反,容器负责把需要相互协作的对象引用赋予各个对象. 创建应用对 ...
- 视觉SLAM十四讲学习笔记-第二讲-开发环境搭建
专栏系列文章如下: 视觉SLAM十四讲学习笔记-第一讲_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习笔记-第二讲-初识SLAM_goldqiu的博客-CSDN博客 lin ...
- 《Real-Time Rendering》第四版学习笔记——Chapter 9 Physically Based Shading(一)
一.光的物理特性 光与物体的交互形成了基于物理着色的基础. 在物理层面上,光的模型为电磁横波.每个波都有一个单一的波长λ\lambdaλ.具有单一波长的光叫单色光(monochromatic ligh ...
- 《Real-Time Rendering》第四版学习笔记——Chapter 9 Physically Based Shading(二)
上接文章:<Real-Time Rendering>第四版学习笔记--Chapter 9 Physically Based Shading(一) 六.微观几何 每个可见的表面点都包含了很多 ...
- 《Real-Time Rendering》第四版学习笔记——Chapter 9 Physically Based Shading(三)
前文: <Real-Time Rendering>第四版学习笔记--Chapter 9 Physically Based Shading(一) <Real-Time Renderin ...
- 《Go语言圣经》学习笔记 第二章 程序结构
Go语言圣经学习笔记 第二章 程序结构 目录 命名 声明 变量 赋值 类型 包和文件 作用域 注:学习<Go语言圣经>笔记,PDF点击下载,建议看书. Go语言小白学习笔记,几乎是书上的内 ...
- 小吴的《机器学习 周志华》学习笔记 第二章 2.4 比较检验、2.5 偏差与方差
小吴的<机器学习 周志华>学习笔记 第二章 2.4 比较检验. 2.5 偏差与方差 2.4 比较检验 上一周提到了实验的评价方法和性能量度,步骤简单可以看成:先使用某种实验评估方法测得学习 ...
- PhalAPI学习笔记 ——— 第二章接口服务请求
PhalAPI学习笔记 --- 第二章接口服务请求 前言 接口服务请求 接口服务请求案例 自定义接口路由 开启匹配路由 配置路由规则 nginx apache 服务请求 结束语 前言 公司业务需要转学 ...
- [go学习笔记.第二章] 2.go语言的开发工具以及安装和配置SDK
一.工具介绍: 1.Visual Studio Code 一个运行于Mac,Windows,和linux上的,默认提供Go语言的语法高亮的IED,可以安装Go语言插件,还可以支持智能提示,编译运行等功 ...
最新文章
- 2021年大数据Flink(三十九):​​​​​​​Table与SQL ​​​​​​总结 Flink-SQL常用算子
- 连接php的作用是什么,什么是超链接,有什么作用
- Android图片颜色比例,Android开发学习之路-图片颜色获取器开发(1)
- Python的流程控制 - for序列
- File Explore 中data权限修改,实体机
- 使用 SQL 语句从数据库一个表中随机获取一些数据
- CrazyDiskInfo硬盘检测工具 安装记录
- java随机数排序算法_理解快速排序算法
- 无法连接上 cn.archive.ubuntu.com:80 (123.129.214.98)。 - connect (111: 拒绝连接)
- python中的类属性和实例属性
- 磁盘文件的正常读写与异步读写
- PTA c语言 求幂级数展开的部分和
- 解读Linux命令格式
- go语言 select
- Android 自定义下拉框的实现 Spinner
- 浸会大学推中药材图像数据库
- 使用xlsx.core.min.js进行导入(表格)导出(Excel)功能
- linux系统pyodbc安装与使用教程
- Pointnet网络结构与代码解读
- java 反射机制中的 Filed (属性反射机制)
热门文章
- 腾讯服务器漏洞修复,腾讯安全玄武实验室提交Apache Dubbo高危漏洞,官方已发布修复版本...
- 高通mm-camera_vendor
- 虚拟机Oracle BIEE下载
- vue3+ts校验不通过问题
- 王道考研系列:计算机组成原理
- 《Spring揭秘》读书笔记 1:IoC容器
- 第三章 生产要素市场
- java生成32位流水号,Java生成流水号
- 微型计算机原理及应用马义德,微型计算机原理及应用.doc
- QT5 / opencv / vs2013中文汉字无法显示(显示问号)