本篇文章主要与大家分享一下如何使用matlab进行二维和三维空间的位姿描述及坐标系的变换,文章内容处于更新和补充中,(我同时安装了机器人工具箱9.10版本和10.4版本,因此文章也介绍了两种版本工具箱下的用法)

   一、

   1、二维空间的位姿描述

  (1)在二维空间下对进行坐标系的平移和旋转可以使用se2函数(在9.10版本工具箱中用se2函数,10.4版本为SE2函数),我们在matlab的命令行窗口输入help se2可以查看matlab的帮助文档中对se2函数使用的解释,其参数X,Y分别是在X、Y方向平移的距离,参数THETA是旋转的角度,具体的例子如下:

  ①在X方向平移1,在Y方向平移2 ,旋转90度

%9.10版本机器人工具箱
T=se2(1,2,90,'deg')   %参数THETA为角度制
T=se2(1,2,pi/2)       %参数THETA为弧度制%10.4版本机器人工具箱
T=SE2(1,2,pi/2)       %参数THETA为弧度制
T=SE2(1,2,90,'deg')   %参数THETA为角度制

   运行结果如下:

T =0.0000   -1.0000    1.00001.0000    0.0000    2.00000         0    1.0000

  (2)在二维空间下对进行坐标系的旋转可以使用rot2函数(10.4版本工具箱),其参数为旋转的角度,具体的例子如下:

R=rot2(pi)

   运行结果如下:

R =-1.0000   -0.00000.0000   -1.0000

  (3)求二维平面内,平移、旋转的齐次变换矩阵,可以分别用transl2()函数和trot2()函数,具体的例子如下:

%原点平移至(1,2)
transl2(1,2)%逆时针旋转30度
trot2(30,'deg')

   运行结果如下:

ans =1     0     10     1     20     0     1ans =0.8660   -0.5000         00.5000    0.8660         00         0    1.0000

  (4)我们可以使用trplot2函数(9.10和10.4版本均可使用)绘制出上面介绍的坐标变换图像,我们在matlab的命令行窗口输入help trplot2可以查看matlab的帮助文档中对trplot2函数使用的解释(本文后面介绍的函数也会适当的截取帮助文档内的内容,后面就不做此说明了 在命令行窗口输入help 后面跟想要查询的名字就可以了)通过帮助文档中列出的Options,可以知道我们可以对很多参数进行设定,具体的例子如下:

  ①例子1:最简单的例子,按照默认值画出上面介绍的T的图像

trplot2(T)

   运行结果如下:

  ②例子2:画出上面介绍的T的图像,并将新的坐标系命名为A,颜色线条颜色设定为红色

trplot2(T, 'frame', 'A', 'color', 'r')

   运行结果如下:

   2、三维空间的位姿描述

  (1)在三维空间下对进行坐标系的平移可以使用transl函数,其参数X,Y,Z分别是在X、Y、Z方向上平移的距离,具体的例子如下:

  ①在X方向平移1,在Y方向平移2 ,在Z方向上平移3

T = transl(1, 2, 3)

   运行结果如下:

T =1     0     0     10     1     0     20     0     1     30     0     0     1

  (2)在三维空间下对进行坐标系的旋转可以使用rotx、roty、rotz函数,或者trotx、troty、trotz函数,这两类函数的不同之处是rotx、roty、rotz函数是3X3的矩阵,而trotx、troty、trotz函数是4X4的矩阵



  ①例子1:沿X轴旋转60度(π/3)

T1=rotx(60,'deg')  %角度制  3x3
T2=rotx(pi/3)      %弧度制  3x3
T3=trotx(pi/3)     %弧度制  4x4

   运行结果如下:

T1 =1.0000         0         00    0.5000   -0.86600    0.8660    0.5000T2 =1.0000         0         00    0.5000   -0.86600    0.8660    0.5000T3 =1.0000         0         0         00    0.5000   -0.8660         00    0.8660    0.5000         00         0         0    1.0000

  (3)我们可以利用trplot函数绘制出绘制出上面介绍的坐标变换图像,同样我们可以对Options中所列出的参数根据需要进行设定,一些具体的例子如下:


  ①例子1:绘制出绕X轴旋转60度的图像

T1=rotx(60,'deg')   %也可以使用T1=trotx(60,'deg')
trplot(T1)

   运行结果如下:

  ②例子2:绘制出绕X轴旋转60度的图像,并分别以红色、绿色、蓝色显示X、Y、Z轴

T1=rotx(60,'deg')   %也可以使用T1=trotx(60,'deg')
trplot(T1,'rgb')

   运行结果如下:


  (4)我们可以利用tranimate函数查看动态的变换效果,一些具体的例子如下:

  ①例子1:绘制出绕X轴旋转60度的动态图像

T1=rotx(60,'deg')   %也可以使用T1=trotx(60,'deg')
tranimate(T1)

   运行结果如下:

  ②例子2:绘制出在X方向平移1,在Y方向平移2 ,在Z方向上平移3的动态图像

T4=transl(1,2,3)
tranimate(T4)

   运行结果如下:

  ③例子3:绘制出绕X轴旋转60度的动态图像,并设定每秒要显示的帧数为5(默认为10)

T1=rotx(60,'deg')   %也可以使用T1=trotx(60,'deg')
tranimate(T1,'fps','5')

  ④例子4:绘制出绕X轴旋转60度的动态图像,并将每一帧的图像以图片的形式保存在名为text_001的文件夹中

T1=rotx(60,'deg')   %也可以使用T1=trotx(60,'deg')
tranimate(T1,'movie','text_001')

   3、将二维空间的位姿矩阵转换成三维空间位姿矩阵

  (1)我们可以利用se3函数将二维空间的位姿矩阵转换成三维空间位姿矩阵,具体的例子如下:

T1=se2(1,2,pi/3)
T2=se3(T1)

   运行结果如下:

T1 =0.5000   -0.8660    1.00000.8660    0.5000    2.00000         0    1.0000T2 =0.5000   -0.8660         0    1.00000.8660    0.5000         0    2.00000         0    1.0000         00         0         0    1.0000

  (2)我们可以利用tranimate函数将其动态变换的过程显示出来

T1=se2(1,2,pi/3)
T2=se3(T1)
tranimate(T2)


   4、坐标变换的综合实例

  (1)绕动坐标系进行旋转,比如先绕X轴旋转π/2,再绕新的Y轴旋转π/2 。(此种旋转方式等效于先绕定坐标系Y轴旋转π/2,再绕定坐标系的X轴旋转π/2)

T1=trotx(pi/2);
T2=troty(pi/2);
T5=T1*T2;
tranimate(T5)

  (2)先在在X方向平移1,在Y方向平移2,在Z方向上平移3,再绕动坐标系进行旋转,比如先绕X轴旋转π/2,再绕新的Y轴旋转π/3

T1=trotx(pi/2);
T2=troty(pi/3);
T3=transl(1,2,3);
T4=T3*T1*T2;
tranimate(T4)


   5、各种姿态表示方法之间的转化

  (1)从欧拉角直接转换为旋转矩阵 用eul2r()函数,如:

R=eul2r(0.1,0.2,0.3)

  (2)从旋转矩阵求欧拉角,用tr2eul()函数,如:

gamma = tr2eul(R)

  (3)从旋转矩阵求RPY角,用tr2rpy()函数,如:

R1 = rpy2r(0.1, 0.2, 0.3)
gamma = tr2rpy(R1)

如何使用matlab进行二维和三维空间的位姿描述及坐标系的变换相关推荐

  1. matlab三维选取二维,基于Matlab绘制二维和三维图形以及其他图形控制函数的使用方法...

    Matlab绘图 强大的绘图功能是Matlab的特点之一,Matlab提供了一系列的绘图函数,用户不需要过多的考虑绘图的细节,只需要给出一些基本参数就能得到所需图形,这类函数称为高层绘图函数.此外,M ...

  2. 【MATLAB】二维和三维图

    二维图和三维图 文章目录 二维图和三维图 1.二维线图 2.三维绘图 3.子图 1.二维线图 要创建二维线图,请使用 plot 函数.例如,绘制正弦函数:· x=0:2*pi/100:2*pi;y=s ...

  3. MATLAB学习笔记——二维和三维绘图

    MATLAB学习笔记--二维和三维绘图 近期练习matlab的二维和三维绘图,整理一下,以防忘记. 文章目录 MATLAB学习笔记--二维和三维绘图 一.二维绘图 1.plot命令 2.fplot 命 ...

  4. MATLAB 的绘图:二维和三维

    本节介绍MATLAB 的两种基本绘图功能:二维平面图形和三维立体图形. 5.1 二维平面图形 5.1.1 基本图形函数 plot 是绘制二维图形的最基本函数,它是针对向量或矩阵的列来绘制曲线的.也就是 ...

  5. matlab在二维平面和三维空间中绘制圆形

    matlab在二维平面和三维空间中绘制圆形 二维平面绘制圆形 方法1: x = 10;y = 10;%圆心 r = 5; %半径 rectangle('Position',[x-r,y-r,2*r,2 ...

  6. Matlab中一维和二维滤波函数及其典型用法【随时更新】

    Matlab中一维和二维滤波函数及其典型用法[随时更新] 一维滤波函数 均值滤波器movmean 中值滤波器movmedian 二维滤波函数 用fspecial预定义各种二维滤波器 主要用于自查,如果 ...

  7. matlab画comsol二维图,标注图在二维和三维绘图组中的运用

    在绘图组中添加标注图,可以非常简便地在仿真结果绘图中标注名称.注释以及指定位置求得的物理量数值.在本篇博客文章中,我们将以热沉模型为例探讨如何添加标注图. 标注图是什么? 标注图是 COMSOL Mu ...

  8. matlab图片包微盘,如何用Matlab绘制二维图形资料下载

    简要 上一篇已经对图形的属性有过介绍,在此基础上来进行二维以及后续三维图形的操作(注:没接触过其他维度的操作,就不折腾相关的内容了),将会更容易理解这些属性的用法,当然,全部的属性使用都来一遍,感觉就 ...

  9. matlab的二维绘图

    matlab绘制图形的步骤为: 数据准备:产生自变量采样向量,计算相应的函数值向量. 选定图形窗口及子图位置:在默认情况下,MATLAB系统绘制的图形为figure(1).figure(2),... ...

最新文章

  1. VIEW层AJAX提交表单到Controller的实体(AJAX传递序列化的输入元素)
  2. asp.net 验证正则表达式
  3. 阿里大神的刷题笔记.pdf
  4. MYSQL 时间计算的 3 种函数
  5. IntelliJ IDEA 12创建Maven管理的Java Web项目(图解)
  6. android 游戏 重力
  7. GYM101002C - Greetings!
  8. jenkins Auth fail验证失败
  9. [你必须知道的.NET] 第二回:对抽象编程:接口和抽象类
  10. GCC 中文手册 - 摘自纯C论坛
  11. [WinForm] VS2010发布、打包安装程序(超全超详细)
  12. 每天一个linux命令:du 与 df
  13. [数分提高]2014-2015-2第2教学周第1次课
  14. python消息中间件activemq_python 发送和接收ActiveMQ消息的实例
  15. python水果超市管理系统流程图_项目1-水果超市管理系统-学生
  16. Excel表格数据填充到word模板中
  17. 低成本、低功耗、小体积433MHz数字量无线控制器
  18. 清北学堂-D1-T1-alien
  19. CSAPP:第二章——信息的表示和处理
  20. 程序设计之学生宿舍管理系统

热门文章

  1. 零碎的知识点及常用特效
  2. 2020-03-18
  3. lftp的使用以及常见的指令
  4. 【调剂】云南民族大学2023年硕士研究生招生调剂公告
  5. java 线程的构造函数_[c++11]多线程编程(二)——理解线程类的构造函数
  6. 李宏毅DLHLP.10.Voice Conversion.2/2. CycleGAN and starGAN
  7. java 链表 深拷贝_单链表深拷贝的实现
  8. python搜索关键词的公众号文章标题和路径_按关键字搜索并爬去微信公众号文章...
  9. 四川大学江安校区计算机学院照片,几张图告诉你四川大学江安校区颜值到底有多高...
  10. 计算机打印机零件维修明细,维修师傅必看:激光打印机检修详解