Matlab坐标变换篇
一、安装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坐标变换篇相关推荐
- MATLAB基础篇——微积分应用
MATLAB基础篇--微积分应用 函数极限 导数 定积分与不定积分 二重积分与三重积分 曲线积分 曲面积分 级数 微分方程和微分方程组的解析解 函数极限 limit函数: limit(f,x,a,'l ...
- matlab实指数序列,matlab入门篇正弦信号实指数信号和复指数信号的仿真
matlab入门篇正弦信号实指数信号和复指数信号的仿真 正弦信号与实指数 /复指数信号的仿真Matlab- -学习目标o 通过对正弦信号.余弦信号.指数信号.复指数信号这些初级信号的仿真,初步掌握各种 ...
- MATLAB基础篇——数值分析篇
MATLAB基础篇--数值分析篇 1.solve求解方程/方程组(不涉及微积分运算) 格式: syms 符号变量(要求解的变量) solve(方程左边==方程右边,符号变量) 例子: (1)求解方程x ...
- 201632位matlab下载_【科研利器】带你get“研”途上的MATLAB入门篇
经过半个多月的激烈角逐,在同学们的热情投票和支持下,MATLAB以超过半数的选票成功成为同学们心目中最想get的app.在接下来的学习中,我们将教程一共分为两期.入门篇.提高篇.首先是基础入门篇.敲黑 ...
- 语音信号线性预测分析(MATLAB实战篇)
文章目录 前言 基本概念 基本参数的求解及其用途 1.线性预测系数(LPC) 2.线性预测系数LPC的频谱 3.线性预测系数的倒谱LPCC 4.线性预测误差e(n)及其自相关 5.预测误差滤波器A(z ...
- 【matlab 基础篇 02】基础知识一键扫盲,看完即可无障碍编程(超详细+图文并茂)
博主快速入门matlab,系统地整理一遍,如何你和我一样是一个新手,那么此文很适合你: 本人能力有限,文中难免有错误和纰漏之处,请大佬们不吝赐教 创作不易,如果本文帮到了您: 请帮忙点个赞
- matlab 滤波器篇
快毕业了,把自己写的现成的matlab函数分享给有需要的人,由于个人水平有限,写的不好请见谅,愿意拍砖的尽管拍好了.目前还不考虑读博,所以写的程序仍了可惜,所以就拿出来分享.好了不废话了,开始正题. ...
- 学习笔记-Matlab算法篇-规划算法
01线性规划 Matlab求解线性规划命令:[x,fval]=linprog(c,A,b,Aeq,beq,LB,UB,X0,OPTIONS) 这里 fval 返回目标函数的值,LB 和 UB 分别是变 ...
- stackedplot 函数_【matlab 基础篇 03】一文带你全面了解 plot 绘图函数的使用(超详细+图文并茂)...
快速入门matlab,系统地整理一遍,如何你和我一样是一个新手,那么此文很适合你: 1 前言 如果你是和我一样的小白,强烈推荐看看这里,需要合理地利用官方的文档,通常我觉得官方文档是最好的,没有之一, ...
- matlab table中的文字转string_Table数据结构及应用--MATLAB 基础篇
正月里都是年,先给大家云拜年,祝大家在新的一年里身体健康,事业有成,家庭幸福 1.Table来源 在工程上面,数据多为表格形式,其特点列与列之间存在数据类型不同,而每一列的数据类型相同.并且每一列或者 ...
最新文章
- HTML5 Canvas动画效果实现原理
- php flink,plus/flink.php · 辉辉菜/三强源码 - Gitee.com
- 配置redis自启动脚本
- 地址栏地址 获取_直播源获取工具,支持斗鱼、虎牙、B站、企鹅电竞、YY、抖音、西瓜直播!...
- Flsak项目--图片验证码
- AssetsLibrary使用介绍
- 【MLNLP顶会论文发表总榜】谷歌最狂,清北入前十,周明、张岳、刘挺华人前三,中美差距何止一点点!...
- 最新Python爬取淘宝评论(2020年4月)
- 计算机类学术论文格式,学术论文的标准格式是什么
- Office 365网络链接概览(三)--专线express route
- 【Android studio】使用小米手机(MIUI8)真机调试
- Kotlin GreenDao
- C,D,Go,Rust,Nim,Zig,V,Julia,Py,C#,Kotlin 11语回文数大战!仅供娱乐参考!
- 腾讯云音视频互动课堂trtc,实现逻辑,服务端混流逻辑
- 面试官:大文件上传如何做断点续传?
- Ubuntu 16下 AnyProxy + ios 抓包环境配置
- ap统计学需要什么计算机,AP统计学学霸备考经验分享
- 用软件构造的思维理解猴子摘香蕉问题
- python图像处理(图像缩放)
- 央金藏文输入法的删除
热门文章
- python数据结构题目_python数据结构_递归python数据结构_python数据结构 面试题 - 云+社区 - 腾讯云...
- 计算机概论综述,计算机组成原理唐朔飞PPT 第1章 计算机系统概论综述.ppt
- kodwebserver mysql_kod云项目搭建
- ARM处理器开发详解(一)
- 06-13最新Xcode7 beta版迅雷离线下载
- Create React App无eject配置(react-app-rewired 和 customize-cra)
- html粒子特效图片切换,javascript转换静态图片,增加粒子动画效果
- 【问题解决】 请点击工具-Internet选项-高级,关闭“启用集成WINDOWS验证”选项。然后关闭浏览器,重新登录系统。
- 金蝶k3wise 核算项目、辅助资料
- 不同大小硬盘对拷oracle,硬盘对拷方式克隆时必须注意一个大问题