1.前言: 在机器人的应用中,可以使用不同的坐标系来定义机器人,传感器和其他物体的位置。通常,对象在三维空间中的位置可以通过位置和方向值指定。这些值有多个可能的表示形式应用于某些特定应用程序。平移和旋转是位置和方向的替代术语。Robotics System Toolbox机器人系统工具箱支持机器人中常用的表示形式,并允许您在它们之间进行转换。将这些表示应用于三维点时,可以在坐标系之间进行变换(机器人系统工具箱假定位置和方向是在右手笛卡尔坐标系中定义的)。
2、欧拉角:缩写eul (1-by-3) 欧拉角是描述刚体方向的三个角度。每个角度都是围绕给定坐标框轴的标量旋转。机器人系统工具箱支持两个旋转形式。'ZYZ’轴顺序通常用于机器人应用。'ZYX’轴顺序,该顺序也称为"滚动间距偏航(rpy)"。
例如,围绕 pi y轴的旋转表示为:
eul = [0 pi 0]
3、齐次变换:缩写tform (4-by-4) 齐次变换矩阵将平移和旋转组合到一个矩阵中,旋转矩阵算子一般如下。
文章图片
所以围绕y轴旋转一个角度后,在沿y轴平移4个单位的齐次变换为:
4、四元数:缩写quat (1-by-4) 四元数是具有标量旋转和三元素矢量的四元素矢量。四元数在应用时的优点可以避免其他表示中固有的奇点问题。第一个元素w是一个标量,用于定义旋转轴的[x y z]来规范化矢量。
如:围绕y轴旋转pi/2表示为
quat = [0.7071 0 0.7071 0]5、旋转矩阵:缩写rotm (3-by-3) 旋转矩阵描述三维空间中的旋转。它是一个方阵,行列式为 1。具体同在上述介绍的旋转算子。
6、平移变换:缩写trvec (1-by-3) 平移变换也是位置矢量,在三维欧几里得空间中表示为笛卡尔坐标。它仅涉及应用于所有点的坐标转换,不涉及旋转。
例如,沿x轴的 3 个单位和沿z轴的 2.5 个单位的平移将表示为:
trvec = [3 0 2.5]
7、机器人系统工具箱所支持的函数变换(蓝色部分表示可以互相转换)
文章图片
9、后记: 坐标的变换大概写有两篇, MATLAB下坐标系变换(1)和MATLAB坐标系变换(2)—逃不过的四元数。在MATLAB坐标系变换(2)—逃不过的四元数中有演示的代码(主要是机器人工具箱Robotics Toolbox中的一些函数),可以复制运行方便理解,其中开篇的四篇参考链接中有关于各种变换的数学推导,值得研读。另外,作为使用可以直接调用函数进行相关变换即可,mathwork官网中有,可具体查看或使用时help下。链接如下:https://www.mathworks.com/help/robotics/coordinate-system-transformations.html(机器人系统工具箱支持的函数)
最后,使用时发现俩个工具箱中函数有些变换是相同的,毕竟变换下的数学原理是一样的(为了方便将MATLAB坐标系变换(2)—逃不过的四元数中提到的关于数学推导的参考连接也放到此处)
(1)http://mini.eastday.com/mobile/180306210610472.html#(2)https://www.cnblogs.com/21207-iHome/p/6894128.html(3)https://blog.csdn.net/xiaoma_bk/article/details/79082629(4)https://blog.csdn.net/lql0716/article/details/72597719
【matlab|机器人中的坐标转换关系(个人记录学习)】代码参看(运行了解,方便直接使用)—以下在利用Baxter机器人模型做路径规划时为了解各种变换关系时参看的部分代码。
%% 将四元数转换成旋转矩阵3-by-3
Q=[0.1461 0.9889 0.30125 0.4026];
%分别表示四元数的实部与虚部
Rq= quaternion(Q)
Q2R= rotmat(Rq,'frame')
%将3-by-3旋转矩阵转换成齐次式
tform = rotm2tform(Q2R)
%% 四元数转齐次变换矩阵4-by-4
quat = [0.7071 0.7071 0 0];
tform = quat2tform(quat)
%四元数转齐次变换矩阵
Q=[0.141 0.990 0.005 0.023]
tform = quat2tform(Q)
%===================================%
eulZYX = quat2eul(quat)%四元素转欧拉角zyx,或者使用[yaw, pitch, roll] =quat2angle(quat);
quat = eul2quat(eulZYX)%欧拉角转四元数
%===================================%
%从齐次转换矩阵中获得欧拉角,四元素
eulZYX = tform2eul(tform)
quat = tform2quat(tform)
%==================================%
%从齐次转换矩阵中获得3-by-3旋转矩阵
rotm = tform2rotm(tform)
%从齐次转换矩阵中获得平移向量
trvec = tform2trvec(tform)
%% 提取矩阵T中的旋转部分、平移部分
t2r(T)
transl(T)'
%% 欧拉角转齐次变换矩阵
T = rpy2tr(ROLL, PITCH, YAW, OPTIONS)
%eul2tr函数:onvert Euler angles to homogeneous transform欧拉-齐次矩阵
eul = [0 pi/2 pi/2];
tformZYZ = eul2tform(eul,'ZYZ')
%% 所以,从Baxter或得位置矢量和四元素表示的姿态。
%======================%先从Baxter获得左臂末端位姿
untuck(bc, 3);
%utuck=[-0.08, -1.0, -1.19, 1.94,0.67, 1.03, -0.50]
enableEndpointDisplay(bc,3);
currPoseL = bc.LeftArmEndpoint;
disp(currPoseL.Pos);
disp(currPoseL.Orientation);
%=====================%
%可以构成末端位姿矩阵4-by-4
P=[0.579 0.185 0.100];
%位置,transl(P)位置变为齐次变换矩阵或trvec2tform(P)
Qpos=[0.141 0.990 0.004 0.023];
%姿态
Transfrom=transl(P)*quat2tform(Qpos)%四元数转齐次变换矩阵
trvec1 = tform2trvec(Transfrom)%从齐次中获得平移向量
quat1 = tform2quat(Transfrom)%从齐次中获得四元数向量
q1=Baxter_Left.ikine(Transfrom);
%逆解获得角度
推荐阅读
- 最优化问题|改进交叉算子的自适应人工蜂群黏菌算法
- matlab|嵌入均衡池的黏菌优化算法
- 最优化问题|加入领导者的黏菌优化算法
- MATLAB图形界面|基于Matlab的汽车出入库计时计费系统
- Matlab旅程|MATLAB的结构化程序设计
- matlab 内存管理 清理内存
- matlab中使用colormap没有效果
- Matlab|圆柱绕流
- MATLAB|Splart-Allmaras湍流模型及MATLAB编程~
- regionprops统计被标记的区域的面积分布,显示区域总数。