一、安装Robotics System Toolbox

二、弄懂左乘和右乘

介绍的第一个函数为欧拉-齐次矩阵

%左手坐标系下,中指对着自己为x轴,z轴为拇指
T0=eul2tr(0,0,0) %基坐标系
Tx=transl(5,0,0) %xyz
Ty=transl(0,5,0) %xyz
Tz=transl(0,0,5) %xyz
trplot(T0) %左手坐标系下,中指对着自己为x轴,z轴为拇指,作为初始坐标系
pause(2);
hold on
trplot(Tx,'color','r')
trplot(Ty,'color','g')
trplot(Tz,'color','b')
xlim([-10 10]);
ylim([-10 10]);
zlim([-10 10]);

具体效果如下: 

介绍的第二个函数为旋转矩阵

T0=eul2tr(0,0,0) %基坐标系
figure
subplot(221)
trplot(T0) %左手坐标系下,中指对着自己为x轴,z轴为拇指,作为初始坐标系
Rx=rpy2tr(90,0,0)%90度
Ry=rpy2tr(0,90,00)%90度
Rz=rpy2tr(0,0,90)%90度
subplot(222)
trplot(Rx,'color','r')
title('Rx=rpy2tr(90,0,0)%90度')
subplot(223)
trplot(Ry,'color','g')
title('Ry=rpy2tr(0,90,00)%90度')
subplot(224)
trplot(Rz,'color','b')
title('Rz=rpy2tr(0,0,90)%90度')

具体效果如下: 

 下面分析左乘和右乘的区别:

T0=eul2tr(0,0,0) %基坐标系
Tx=transl(5,0,0) %xyz
Ty=transl(0,5,0) %xyz
Tz=transl(0,0,5) %xyzRx=rpy2tr(90,0,0)%90度
Ry=rpy2tr(0,90,00)%90度
Rz=rpy2tr(0,0,90)%90度subplot(221)
trplot(T0,'color','g') %左手坐标系下,中指对着自己为x轴,z轴为拇指,作为初始坐标系
title('基坐标系')
xlim([-10 10]);
ylim([-10 10]);
zlim([-10 10]);
grid on
subplot(222)
hold on
trplot(T0,'color','g')
trplot(Rz*Tx,'color','r')
title('Rz*Tx')
xlim([-10 10]);
ylim([-10 10]);
zlim([-10 10]);
grid on
hold offsubplot(223)
hold on
trplot(T0,'color','g')
trplot(Tx*Rx,'color','r')
title('Tx*Rx')
xlim([-10 10]);
ylim([-10 10]);
zlim([-10 10]);
grid on
hold offsubplot(224)
hold on
trplot(T0,'color','g')
trplot(Rz*Rx,'color','r')
title('Rz*Rx')
xlim([-2 2]);
ylim([-2 2]);
zlim([-2 2]);
grid on
hold off

图2是先旋转,后平移,图3是先平移,后旋转,图4是先绕Z,后绕X,都是基于自身坐标系做的变换。

下面会得出一个结论:依次左乘是相对于基坐标系的变换,右乘是相互对于自身坐标系的变换。因此,我们想要得到一个,先绕基坐标系Z旋转30°,再延基坐标系X轴平移50,再沿着自身X平移50,就可以表示为:

T0=eul2tr(0,0,0) %基坐标系
trplot(T0,'color','g') %左手坐标系下,中指对着自己为x轴,z轴为拇指,作为初始坐标系
hold on
trplot(transl(5,0,0)*rpy2tr(0,0,30),'color','r') %左手坐标系下,中指对着自己为x轴,z轴为拇指,作为初始坐标系
trplot(transl(5,0,0)*rpy2tr(0,0,30)*transl(3,0,0),'color','r') %左手坐标系下,中指对着自己为x轴,z轴为拇指,作为初始坐标系
xlim([-10 10]);
ylim([-10 10]);
zlim([-10 10]);title("transl(5,0,0)*rpy2tr(0,0,30)*transl(3,0,0)");

三、坐标变换方式

首先介绍X-Y-Z固定角坐标系,为什么叫固定角坐标系?“固定”指的是旋转是绕着固定的参考系的各个主轴,比如:

我们对{B}进行旋转,每次都是绕着固定坐标系{A}的轴进行旋转的,我们常将绕着X、Y、Z的旋转称为pitch、yaw、roll,也即俯仰、偏航、翻滚。将三次旋转利用旋转矩阵写出并相乘:

乘积为:

接着我们介绍Z-Y-X欧拉角坐标系,在这种表示法中,我们每次旋转都是绕着{B}的主轴进行旋转,也就是说,并不是绕着固定坐标系{A}的轴进行旋转了:

在这种表示下,有:

关于这个式子应该怎么理解呢?我们最终的目标是求出{B}相对于{A}的旋转,对于固定角坐标系,每次旋转都是基于{A}的,因而是按照旋转次序,依次左乘;对于欧拉角则是利用中间坐标系变换,所以依次右乘。比如上面的Z-Y-X欧拉角,记{A}绕{A}的Z旋转得到{B'},然后{B'}绕{B'}的Y旋转得到{B''},最后{B''}绕{B''}的X旋转得到{B},所以,我们可以写出:

式中的3个旋转角分别是绕着{A}的Z轴,{B'}的Y轴,{B‘’}的X轴旋转(所以相对于我们的旋转,是右乘,先乘以绕X的旋转,再乘以绕Y的旋转,最后才是绕Z的旋转),因此我们可以得出结论:X-Y-Z固定角与Z-Y-X欧拉角在同样的角度大小下,旋转所得到的最终结果是一样的,也就是说在这两种表示下,{B}相对于{A}的姿态一致。注意,这并不是巧合,是因为固定角表示下是基本旋转矩阵左乘,而欧拉角表示下是基本旋转矩阵的右乘,而恰好X-Y-Z与Z-Y-X是相反的旋转顺序,所以最终的效果就一样了。

然后介绍一下等效轴角坐标表示法,也即用一个单位矢量加上一个旋转角表示旋转:

因为我们的单位矢量长度恒为1,所以实际上确定它只需要两个参数,加上旋转角,也即三个参数,正好确定旋转所需要的3个自由度。当旋转轴K为一般轴时,等效旋转矩阵为:

除了上面的固定角坐标系表示法、欧拉角表示法和等效轴角坐标系表示法之外,我们再介绍另一种姿态表示法,这种表示法通过四个数值来表示,称为欧拉参数。

由等效旋转轴和等效旋转角定义的欧拉参数为:

我们将这四个变量平方相加,得到:

也即,这四个参数不是独立的,所以,仍然符合我们对于姿态的3自由度的认知。同时,由上面的式子可知,我们可以将一个姿态看作是四维空间中单位超球面上的一点,或者说,它是一个单位四元数。用这组参数表示的旋转矩阵为:

已知旋转矩阵求欧拉参数为:

Matlab坐标变换篇相关推荐

  1. MATLAB基础篇——微积分应用

    MATLAB基础篇--微积分应用 函数极限 导数 定积分与不定积分 二重积分与三重积分 曲线积分 曲面积分 级数 微分方程和微分方程组的解析解 函数极限 limit函数: limit(f,x,a,'l ...

  2. matlab实指数序列,matlab入门篇正弦信号实指数信号和复指数信号的仿真

    matlab入门篇正弦信号实指数信号和复指数信号的仿真 正弦信号与实指数 /复指数信号的仿真Matlab- -学习目标o 通过对正弦信号.余弦信号.指数信号.复指数信号这些初级信号的仿真,初步掌握各种 ...

  3. MATLAB基础篇——数值分析篇

    MATLAB基础篇--数值分析篇 1.solve求解方程/方程组(不涉及微积分运算) 格式: syms 符号变量(要求解的变量) solve(方程左边==方程右边,符号变量) 例子: (1)求解方程x ...

  4. 201632位matlab下载_【科研利器】带你get“研”途上的MATLAB入门篇

    经过半个多月的激烈角逐,在同学们的热情投票和支持下,MATLAB以超过半数的选票成功成为同学们心目中最想get的app.在接下来的学习中,我们将教程一共分为两期.入门篇.提高篇.首先是基础入门篇.敲黑 ...

  5. 语音信号线性预测分析(MATLAB实战篇)

    文章目录 前言 基本概念 基本参数的求解及其用途 1.线性预测系数(LPC) 2.线性预测系数LPC的频谱 3.线性预测系数的倒谱LPCC 4.线性预测误差e(n)及其自相关 5.预测误差滤波器A(z ...

  6. 【matlab 基础篇 02】基础知识一键扫盲,看完即可无障碍编程(超详细+图文并茂)

    博主快速入门matlab,系统地整理一遍,如何你和我一样是一个新手,那么此文很适合你: 本人能力有限,文中难免有错误和纰漏之处,请大佬们不吝赐教 创作不易,如果本文帮到了您: 请帮忙点个赞

  7. matlab 滤波器篇

    快毕业了,把自己写的现成的matlab函数分享给有需要的人,由于个人水平有限,写的不好请见谅,愿意拍砖的尽管拍好了.目前还不考虑读博,所以写的程序仍了可惜,所以就拿出来分享.好了不废话了,开始正题. ...

  8. 学习笔记-Matlab算法篇-规划算法

    01线性规划 Matlab求解线性规划命令:[x,fval]=linprog(c,A,b,Aeq,beq,LB,UB,X0,OPTIONS) 这里 fval 返回目标函数的值,LB 和 UB 分别是变 ...

  9. stackedplot 函数_【matlab 基础篇 03】一文带你全面了解 plot 绘图函数的使用(超详细+图文并茂)...

    快速入门matlab,系统地整理一遍,如何你和我一样是一个新手,那么此文很适合你: 1 前言 如果你是和我一样的小白,强烈推荐看看这里,需要合理地利用官方的文档,通常我觉得官方文档是最好的,没有之一, ...

  10. matlab table中的文字转string_Table数据结构及应用--MATLAB 基础篇

    正月里都是年,先给大家云拜年,祝大家在新的一年里身体健康,事业有成,家庭幸福 1.Table来源 在工程上面,数据多为表格形式,其特点列与列之间存在数据类型不同,而每一列的数据类型相同.并且每一列或者 ...

最新文章

  1. HTML5 Canvas动画效果实现原理
  2. php flink,plus/flink.php · 辉辉菜/三强源码 - Gitee.com
  3. 配置redis自启动脚本
  4. 地址栏地址 获取_直播源获取工具,支持斗鱼、虎牙、B站、企鹅电竞、YY、抖音、西瓜直播!...
  5. Flsak项目--图片验证码
  6. AssetsLibrary使用介绍
  7. 【MLNLP顶会论文发表总榜】谷歌最狂,清北入前十,周明、张岳、刘挺华人前三,中美差距何止一点点!...
  8. 最新Python爬取淘宝评论(2020年4月)
  9. 计算机类学术论文格式,学术论文的标准格式是什么
  10. Office 365网络链接概览(三)--专线express route
  11. 【Android studio】使用小米手机(MIUI8)真机调试
  12. Kotlin GreenDao
  13. C,D,Go,Rust,Nim,Zig,V,Julia,Py,C#,Kotlin 11语回文数大战!仅供娱乐参考!
  14. 腾讯云音视频互动课堂trtc,实现逻辑,服务端混流逻辑
  15. 面试官:大文件上传如何做断点续传?
  16. Ubuntu 16下 AnyProxy + ios 抓包环境配置
  17. ap统计学需要什么计算机,AP统计学学霸备考经验分享
  18. 用软件构造的思维理解猴子摘香蕉问题
  19. python图像处理(图像缩放)
  20. 央金藏文输入法的删除

热门文章

  1. python数据结构题目_python数据结构_递归python数据结构_python数据结构 面试题 - 云+社区 - 腾讯云...
  2. 计算机概论综述,计算机组成原理唐朔飞PPT 第1章 计算机系统概论综述.ppt
  3. kodwebserver mysql_kod云项目搭建
  4. ARM处理器开发详解(一)
  5. 06-13最新Xcode7 beta版迅雷离线下载
  6. Create React App无eject配置(react-app-rewired 和 customize-cra)
  7. html粒子特效图片切换,javascript转换静态图片,增加粒子动画效果
  8. 【问题解决】 请点击工具-Internet选项-高级,关闭“启用集成WINDOWS验证”选项。然后关闭浏览器,重新登录系统。
  9. 金蝶k3wise 核算项目、辅助资料
  10. 不同大小硬盘对拷oracle,硬盘对拷方式克隆时必须注意一个大问题