机械臂学习笔记01-位姿描述和坐标变换
前言:导师主要是做图像处理方面的,然后接了一个与机械臂相关的项目,然后让我学习机械臂,我从去年寒假开始,自己搜集资料,看了零星一些文章,感觉自己学的不是很深入,学的也比较零碎,我希望能通过写博客的方式来监督自己的学习。
机械臂我们可以理想地把他作为刚体,以刚体的角度对机械臂进行研究。刚体参考点的位置和刚体的姿态称为刚体的位姿,其表示方式主要有:齐次变换法、矢量法、旋量法和四元数法。其中介绍及应用比较多的是齐次变换法,他能将运动、变换、映射和矩阵运算联系起来。此外齐次变换在研究空间机构动力学、机器人控制算法、计算机图形学和视觉信息处理方面也有广泛的运用。
位姿描述:
(1)位置的描述:
描述一个点的位置,有很多方法。描述点的位置需要基于一个坐标系,常见的坐标系有直角坐标系,极坐标系,圆柱坐标系。通常我们采用直角坐标系来描述一个点的位置。对于直角坐标系{A},空间任意一点p的位置,我们可以用列矢量(px,py,pz)T(px,py,pz)^T(px,py,pz)T来表示,其中px,py,pz是点p在坐标系{A}下的三个分量,这三个分量便能唯一确定一点的位置。
图1-1
(2)方位的描述:
描述刚体的运动,不仅要描述某一点的位置,也要描述刚体的方位;为了描述空间某刚体B的方位,另外设一个直角坐标系{B}与刚体连接,用坐标系{B}的三个单位主矢量XbX_bXb,YbY_bYb,ZbZ_bZb,相对于坐标系{A}的方向余弦组成的3X3的矩阵
BAR_B^ARBAR = [AXB,AYB,AZB][^A{X_B},^A{Y_B},^A{Z_B}][AXB,AYB,AZB] =[r11r12r13r21r22r23r31r32r33]\begin{bmatrix} r11&r12&r13\\ r21&r22&r23\\r31&r32&r33\end{bmatrix}⎣⎡r11r21r31r12r22r32r13r23r33⎦⎤
BAR_B^ARBAR为旋转矩阵,其中上标A代表参考坐标系{A},下标B代表被描述的坐标系{B}。BAR_B^ARBAR矩阵中含有9个元素,只有三个是独立的,他的三个列矢量都是单位主矢量,两两互相垂直。标量rij{r_{ij}}rij可用每个矢量在参考坐标系中单位方向上的投影的分量来表示。BAR_B^ARBAR中的各个分量可用一对单位矢量的点积来表示。由两个单位矢量的点积可以得到二者之间的夹角的余弦,所以旋转矩阵的各个分量常被称作方向余弦。
绕x轴、y轴、z轴旋转θ\thetaθ角度的矩阵分别为:
R(x,θ\thetaθ)=(1000cosθ−sinθ0sinθcosθ)\begin{pmatrix} 1&0&0 \\ 0&cos\theta&-sin\theta \\ 0&sin\theta&cos\theta \end{pmatrix}⎝⎛1000cosθsinθ0−sinθcosθ⎠⎞
R(y,θ\thetaθ)=(cosθ0sinθ010−sinθ0cosθ)\begin{pmatrix} cos\theta&0&sin\theta \\ 0&1&0 \\ -sin\theta&0&cos\theta \end{pmatrix}⎝⎛cosθ0−sinθ010sinθ0cosθ⎠⎞
R(z,θ\thetaθ)=(cosθ−sinθ0sinθcosθ0001)\begin{pmatrix} cos\theta&-sin\theta&0 \\ sin\theta&cos\theta&0 \\0&0&1 \end{pmatrix}⎝⎛cosθsinθ0−sinθcosθ0001⎠⎞
通常情况下会用旋转矩阵来描述刚体的方位。
(3)位姿的描述:
为了完整描述刚体B在空间的位置与姿态,需要将刚体B与坐标系{B}固接。坐标系的原点一般选取物体的特征点,如质心,对称中心等。相对于参考系{A},位置矢量和旋转矩阵分别描述坐标系{B}的原点位置和坐标轴的方位。所以B的位姿由坐标系{B}参考坐标系{A}来描述,即{B} = {BAR_B^ARBAR,AXB^A{X_B}AXB}
(4)手爪坐标系:
为了描述末端执行器的位置和姿态,规定一个与手爪固接的坐标系,称为手爪坐标系。z轴设定在接近物体的方向,称为接近矢量a(approach);y轴设置在设在两手指的联线方向,称为方向矢量o(orientation);x轴由右手法则确定,n称为法向矢量(normal)。如此,手爪的方位就由旋转矩阵[n,o,a]而手爪的位置由位置矢量p所规定,他代表手爪坐标系的原点,因此手爪的位姿可有四个独立矢量进行描述[ n,o,a,p],记为[T]=[ n,o,a,p],在后续正逆运动学中,会多次用到这个坐标系。
坐标变化:
在空间中一点p在不同坐标系下的描述是不同的,从一个坐标系到另一个坐标系描述之间的变化关系主要如下三种:
(1)平移变换:
假设坐标系{B}和{A}有着相同的方位,但是两个坐标系的原点不一致。用位置矢APB^A{P_B}APB来描述{B}相对于参考坐标系{A}的位置,如下图所示。把APB^A{P_B}APB称为{B}相对于{A}的平移矢量。如果点P在坐标系{B}中的位置为BP^B{P}BP,则他相对于{A}的位置BP^B{P}BP可以通过矢量相加得到:
AP^ A{P}AP=BP^ B{P}BP+APB^A{P_B}APB
这个矢量相加的等式称为坐标平移方程。
图2-1
(2)旋转变化:
坐标系{B}与{A}具有相同的坐标原点,却有着不同的方位,如下图所示。可以用旋转矩阵来描述{B}相对于{A}的方位。同样的,空间中一点P在坐标系{A}和{B}中具有以下变换关系:AP^ A{P}AP=BAR_B^A{R}BARBP^B{P}BP ,旋转矩阵与位置矢量的相乘称为坐标系旋转方程。
图2-2
(3)复合变化:
对于一般情况,坐标系{B}与坐标系{A},两个坐标系,原点不重合,方位也不相同,如下图所示。结合上面两个方程,复合变换由坐标平移与坐标旋转共同作用得来的,得出他的一般方程如下:AP^ A{P}AP=BAR_B^A{R}BARBP^B{P}BP+APB^A{P_B}APB
齐次坐标变换:
上式的复合变换对点BP^B{P}BP来说是非齐次的,但是可以把他转化成齐次的形式:
(AP1)\begin{pmatrix} ^A{P} \\ 1\end{pmatrix}(AP1)=(BARAPB01)\begin{pmatrix} _B^AR &^A{P_B} \\ 0&1\end{pmatrix}(BAR0APB1)(BP1)\begin{pmatrix} ^B{P} \\ 1\end{pmatrix}(BP1)
(1)平移齐次坐标变换:
空间的任意点都有矢量ai+bj+ck来描述,其中i,j,k为轴x,y,z上的单位矢量,所以此点可以用平移齐次变换表示为:
Trans(a,b,c)=(100a010b001c0001)\begin{pmatrix} 1&0&0&a \\ 0&1&0&b \\ 0&0&1&c \\ 0&0&0&1 \end{pmatrix}⎝⎜⎜⎛100001000010abc1⎠⎟⎟⎞
(2)旋转齐次坐标变换:
对应于轴x,y,z作转角为θ\thetaθ的旋转变化,可得到如下齐次矩阵:
Rot(x,θ\thetaθ)=(10000cosθ−sinθ00sinθcosθ00001)\begin{pmatrix} 1&0&0&0 \\ 0&cos\theta&-sin\theta&0 \\ 0&sin\theta&cos\theta&0 \\ 0&0&0&1 \end{pmatrix}⎝⎜⎜⎛10000cosθsinθ00−sinθcosθ00001⎠⎟⎟⎞
Rot(y,θ\thetaθ)=(cosθ0sinθ00100−sinθ0cosθ00001)\begin{pmatrix} cos\theta&0&sin\theta&0 \\ 0&1&0&0 \\ -sin\theta&0&cos\theta&0 \\ 0&0&0&1 \end{pmatrix}⎝⎜⎜⎛cosθ0−sinθ00100sinθ0cosθ00001⎠⎟⎟⎞
Rot(z,θ\thetaθ)=(cosθ−sinθ00sinθcosθ0000100001)\begin{pmatrix} cos\theta&-sin\theta&0&0 \\ sin\theta&cos\theta&0&0 \\ 0&0&1&0 \\ 0&0&0&1 \end{pmatrix}⎝⎜⎜⎛cosθsinθ00−sinθcosθ0000100001⎠⎟⎟⎞
(3)复合齐次变换:
空间某点既有平移变换又有旋转变化是,按照变化的先后顺序,可得到如下变化矩阵:
T=Trans(a1a_1a1,b1,b_1,b1,c1c_1c1)*Trans(ana_nan,bn,b_n,bn,cnc_ncn)Rot(y,θ\thetaθ)Rot(x,ε\varepsilonε)
参考
[1].John J.Craig《机器人学导论》[M]机械工业出版社, 2006:14~47
[2].熊有伦,《机器人技术基础》[M]华中理工大学出版社,1996:15~30
[3]马强.《六自由度机械臂轨迹规划研究》[D]哈尔滨工程大学2007:9~13
[4]马江.《六自由度机械臂控制系统设计与运动学仿真》[D]北京工业大学2009:31~33
机械臂学习笔记01-位姿描述和坐标变换相关推荐
- 机械臂论文笔记(一)【基于卷积神经网络的二指机械手 抓取姿态生成研究 】
基于卷积神经网络的二指机械手 抓取姿态生成研究 论文下载 摘要 第1章 绪论 1.1 抓取生成国内外研究现状 1.1.1已知物体抓取生成 1.1.2相似物体抓取生成 1.1.3 未知物体抓取生成 1. ...
- Moveit!入门——古月居机械臂开发笔记(一)
Moveit!入门--古月居机械臂开发笔记(一) 引言 Moveit!与机械臂控制 1.创作机械臂模型 2.生成配置文件 3.如何使用Moveit!实现机械臂仿真(gazebo) 完善模型 在gaze ...
- MySQL技术内幕-InnoDB存储引擎第2版-学习笔记-01
MySQL技术内幕-InnoDB存储引擎第2版-学习笔记-01 1. MySQL体系结构和存储引擎 1.1 定义数据库和实例 数据库database: 物理操作系统文件或其他形式文件类型的集合. 当使 ...
- RN学习笔记01:概述、特点与环境搭建
RN学习笔记01:概述.特点与环境搭建 一.RN概述 React Native(简称RN)是Facebook于2015年4月开源的跨平台移动应用开发框架,是Facebook早先开源的JS框架 Reac ...
- ES6学习笔记01:Symbol数据类型
ES6学习笔记01:Symbol数据类型 1.Symbol定义 浏览demo01.html: 2.Symbol作对象属性名 Symbol函数可以接收一个字符串作为参数,表示对Symbol实例的描述,输 ...
- django学习笔记01
原创博客地址:django学习笔记01 基于教程,刘江的博客教程Django教程:https://www.liujiangblog.com/course/django/87 第一章:模型层 1.1 模 ...
- Moveit!入门——古月居机械臂开发笔记(二)
Moveit!入门--古月居机械臂开发笔记(二) 引言 ROS机械臂开发_机器视觉与物体抓取 1.ROS中的运动学插件 2.Moveit!碰撞检测 规划场景 3.Pick and Place 4.RO ...
- C#学习笔记 01.01
C#学习笔记 01.01 (学习视频来自bilibili的传智播客赵老师基础教学视频) 服务器与客户端的区别 服务器其实本质上还是一个电脑,只是加装了很多的硬盘,从而实现对数据的大规模存储. 而客户端 ...
- UR机械臂学习(5-2):使用Universal_Robots_ROS_Driver驱动真实机械臂
使用的版本是 Ubuntu18.04 + ROS melodic + UR3(CB3.12) 因为后续需要使用手控器,手控器的驱动需要在Ubuntu18.04下才可以使用. 这篇文章是电脑上的设置,关 ...
最新文章
- 卡尔曼滤波(kalman)相关理论以及与HMM、最小二乘法关系 转
- 802.3和以太网帧结构-路由交换原理1-【HCNA笔记】
- K-近邻(KNN)算法
- vsftpd的配置文件路径,是在哪里指定的?
- C语言中函数如何返回结构体?
- BugKuCTF 杂项 宽带信息泄露
- 远程管理,无需在机房来回穿梭
- IntelliJ IDEA启动Tomcat控制台乱码问题解决
- C++模板专门化与重载
- Git标签tag及tag远程同步
- 快速排序 动图_Java十大排序算法最强总结
- Python风格总结:模块调用
- DevExpress XtraGrid RepositoryItemCheckEdit 复选框多选的解决方法(转)
- 服务器与虚拟技术,云服务器与虚拟化服务器的区别
- 面向对象编程 和 面向接口编程
- java基于springboot校园餐厅订餐管理系统附源码
- 模式识别与机器学习(国科大2021-2022秋季学期课程)-基础概念及算法
- phyton基础-01
- nested exception is com.google.gson.JsonSyntaxException: com.google.gson.stream-异常解决!!!
- nginx配置https阿里云免费ssl
热门文章
- 笔记:caffe安装编译,并用ssd gpu训练自己的数据集
- 【Sciter】Sciter 结合 Preact 封装 图片查看器总结
- modelandview找不到视图_当一个测试工程师准备找工作,需要准备什么?
- 详解,python求矩阵的秩,你肯定能看懂
- (三)pjsip 监听
- Java面向过程实现员工管理系统(利用集合存储数据实现员工增删改查排序)
- 南开大学计算机博士好毕业不,南开一半博士生不能当年毕业(转载)
- Calibre 制作电子书
- 价值800的swapidc鸟云模板开源版
- 典型相关分析(Canonical Correlation Analysis,CCA)原理及Python、MATLAB实现