Matlab机器人工具箱(0) 您所在的位置:网站首页 matlab向量与矩阵的定义方法有什么不同 Matlab机器人工具箱(0)

Matlab机器人工具箱(0)

#Matlab机器人工具箱(0)| 来源: 网络整理| 查看: 265

Matlab机器人工具箱(0)——旋转与平移变换 前言旋转变换旋转矩阵与可视化欧拉角RPY角角轴单位四元数 平移与旋转组合总结参考资料

前言

本文主要介绍如何使用matlab工具箱对旋转和平移进行操作。这里使用的RTB工具箱10.2版本,不同版本间代码风格可能会有差异,因此请注意工具箱的使用版本。

旋转变换

本部分的一些理论说明可参考旋转矩阵、欧拉角、四元数理论及其转换关系

旋转矩阵与可视化 close all;clc;clear; %% 旋转 %% 以下为旋转矩阵表示法 % 绕x旋转90度 Rx = rotx(90); % 绕y旋转90度 Ry = roty(90); % 绕z旋转90度 Rz = rotz(90); % 绘制旋转后的坐标系 trplot(Rx); % 绘制世界坐标到Rx的动画过程 tranimate(Rx); % 两个旋转的叠加, 即先绕世界坐标系的x轴转90度, % 再沿当前坐标系的y轴转动90度 figure; Rxy = Rx*Ry; tranimate(Rxy);

这部分比较直观,代码注释已经写得非常清楚了。 关于旋转矩阵,值得说明的一点是,有的人分不清什么时候左乘,什么时候右乘,其实很简单:以当前坐标系的轴旋转,就右乘;以世界坐标系的轴旋转,就左乘

欧拉角 %% zyz欧拉角————奇异点y=0,有多解 R_zyz = eul2r(15,30,60); %这里输入是角度制 gamma = tr2eul(R_zyz); %这里输出是弧度制 % 等同于下式: R_zyz = rotz(15)*roty(30)*rotz(60); % 角度制与弧度制的相互转化 gamma2=rad2deg(gamma); gamma3=deg2rad(gamma2);

这里有一个值得注意的问题:欧拉角转旋转矩阵的输入是角度制的,而旋转矩阵转欧拉角的输出却是弧度制 ,当然这跟工具箱的版本有关,用的时候要先确认一下输入输出的单位到底是弧度还是角度! 另外要指出的是,欧拉角的表示不唯一,并且当第二个旋转角(即y对应的旋转角度)为0时,欧拉角的表示发生奇异,这一点尤其要注意。

RPY角 %% rpy角——————attention 奇异点p=+-90,无多解 R_rpy = rpy2r(15,30,60); %这里输入是角度制 rpy = tr2rpy(R_rpy); %这里输出是弧度制 rpy2=rad2deg(rpy); % 等同于下式: R_rpy2 = rotz(60)*roty(30)*rotx(15);

RPY角和zyz欧拉角同样有相似问题,但是解决了表示的不唯一问题,而且奇异点发生在p=±90°的位置。 另外一个值得注意的地方是,rpy2r的输入对应的顺序是pitch-yaw-roll,这与KDL等库中的顺序不同。

角轴 %% 角轴 [theta , v] = tr2angvec(rpy2r(15,30,60)); %theta为弧度制 R_angvec = angvec2r(theta, v ); 单位四元数 %% 四元数 q = dcm2quat( rpy2r(15,30,60) ); %Aerospace Toolbox R_quat = quat2dcm(q); %Aerospace Toolbox % RTB 四元数类 q = Quaternion( q ); %构造函数,把1x4的向量转成四元数类,方便运算 q.display; %显示四元数 q.double; %四元数转化为向量 q.matrix; %四元数转化为反对称矩阵 q.inv; %四元数的逆 q.norm; %四元数的模长 q.unit; %四元数单位化 % RTB 单位四元数类 q = UnitQuaternion( R_quat ); R_UQuat = q.R; %单位四元数转化为旋转矩阵 T_UQuat = q.T; %单位四元数转化为齐次变换矩阵 eular = q.toeul; %单位四元数转化为欧拉角 rpy =q.torpy; %单位四元数转化为rpy [ang,v] = q.toangvec; %单位四元数转化为角轴 vec = q*[1 0 0 ]' ; %用单位四元数直接对向量进行旋转操作 vec_2 = q* rotx(90); %用单位四元数直接对旋转矩阵进行旋转操作 q.plot() %绘制四元数代表的坐标

值得注意的是,RTBv10.2版本的Quaternion和UnitQuaternion分离开了,这在示例代码中有所体现,和一些参考书中的介绍可能会有所不同。所以说,matlab机器人工具箱版本不一样,有些东西差距确实很大。 另外,在代码开头也展示了另一个工具箱(Aerospace Toolbox)四元数部分的介绍,用起来也很方便。

平移与旋转组合 %% 旋转与平移 % 纯平移 T_transl = transl(1,0,0); %旋转不变,沿x轴平移1的齐次变换矩阵 % 纯旋转 T_rot = trotx(90); %不移动,绕x轴转动90度 % 组合 T = transl(1,0,0) * trotx(90); % 先沿x方向移动1,再绕当前的x轴转动90度 %提取旋转部分 rot = t2r(T); %提取平移部分 tans = transl(T); % 绘图 figure; trplot(T); % 绘制动画 figure; tranimate(T); 总结

本文主要介绍了matlab机器人工具箱关于旋转与平函数的介绍,一些函数的扩展介绍仅包括高频使用的内容,如果需要用到一些没有列举到的方法,找matlab的help文档即可。下一篇博客介绍工具箱关于机器人建模和运动学的操作:Matlab机器人工具箱(1)——机器人的建立、绘制与正逆运动学

参考资料

机器人学、机器视觉与控制——MATLAB算法基础.电子工业出版社.2017-11-20



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

      专题文章
        CopyRight 2018-2019 实验室设备网 版权所有