精华内容
下载资源
问答
  • 慕尼黑工大出的史上最全坐标转换工具箱,包含最常用的投影变换功能、七参数布尔沙模型等,强烈推荐!
  • 实现大地坐标与平面坐标转换
  • 1.前言: 在机器人的应用中,可以使用不同的坐标系来...Robotics System Toolbox机器人系统工具箱支持机器人中常用的表示形式,并允许您在它们之间进行转换。将这些表示应用于三维点时,可以在坐标系之间进行变换(机...

    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

    代码参看(运行了解,方便直接使用)---以下在利用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 机器人工具箱1-坐标变换

    千次阅读 2019-11-27 17:18:49
    本文主要参考清华大学出版社的《机器人仿真与编程技术》一书 ...在机器人工具箱中可以使用rotx( Θ)、roty( Θ)、rotz( Θ)计算旋转Θ的旋转矩阵。(Θ为弧度) R=rotx(pi) 显示: R = 1.000000 0...

    本文主要参考清华大学出版社的《机器人仿真与编程技术》一书

    空间中的位置:

    所谓的位姿就是指机器人上每个关节在每一个时刻的位置和姿态。
    在机器人工具箱中可以使用rotx( Θ)、roty( Θ)、rotz( Θ)计算旋转 Θ的旋转矩阵。( Θ为弧度
    R=rotx(pi)
    显示:
    R =
        1.0000         0         0
             0   -1.0000   -0.0000
             0    0.0000   -1.0000
     
    我们使用acos(-1)、asin(0)得到验证,返回结果就是3.1416=pi。
    我们安装了机器人工具箱后可以使用角度形式进行表示,也就是:
    R=rotx(180,'deg')
    结果也是一样,但是直接使用R=rotx(180)返回结果就是:
    R =
        1.0000         0         0
             0   -0.5985    0.8012
             0   -0.8012   -0.5985
    我们算出acos(-0.5985)=2.2124 ,asin(0.8012)=0.9293,之后使用弧度角度转换发现rad2deg(2.2124+0.9293)=180.0062,是补交关系和机器人学中的旋转矩阵定义不相符
    画出来样子:
     
    之后是图形化绘制函数trplot:
    R = rotx(pi)
    subplot(1,2,1)
    title("原始")
    trplot()
    subplot(1,2,2)
    title("旋转后")
    trplot(R)
    效果图:
    清晰的看到绕着x轴旋转了180°
    使用函数tranimate
    R1 = rotx(0)
    R2 = rotx(pi)
    tranimate(R1,R2)
    就可以看到坐标轴旋转的动画效果
     

    坐标变换:

    平移变换:

    A = [0.5,-0.5,0.6,5;0.3,0.8,0.4,3;-0.7,0,0.6,8;0,0,0,1]
    T = transl(0,10,5)
    B = T*A
    C = A*T
    我们的A是空间坐标系
    A =
        0.5000   -0.5000    0.6000    5.0000
        0.3000    0.8000    0.4000    3.0000
       -0.7000         0    0.6000    8.0000
             0         0         0    1.0000
    T是旋转矩阵,通过transl自动生成
    T =
         1     0     0     0
         0     1     0    10
         0     0     1     5
         0     0     0     1
    两个矩阵的关系到底是谁乘谁,我们用BC做了实验。
    B =
        0.5000   -0.5000    0.6000    5.0000
        0.3000    0.8000    0.4000   13.0000
       -0.7000         0    0.6000   13.0000
             0         0         0    1.0000
    C =
        0.5000   -0.5000    0.6000    3.0000
        0.3000    0.8000    0.4000   13.0000
       -0.7000         0    0.6000   11.0000
             0         0         0    1.0000
    我们发现要使用T*A,使T只影响A的最后一列

    旋转变换

    同样使T*A
    A = [0.5,-0.5,0.6,5;0.3,0.8,0.4,3;-0.7,0,0.6,8;0,0,0,1]
    T = trotx(pi/6)
    B = T*A
    其中
    T =
        1.0000         0         0         0
             0    0.8660   -0.5000         0
             0    0.5000    0.8660         0
             0         0         0    1.0000

    平移加旋转

    T=transl(4,0,3)*trory(pi/3)
    当我们需要由变换后矩阵得到变换前的矩阵时使用:
    inv(T)
    得到变换矩阵的逆
    如果我们想从T中提取旋转分量
    R=t2r(T)
    如果想提取平移分量
    p=tranl(T)
    总结
    • 使用transl()创建平移变换矩阵
    • 使用transl()提取平移部分
    • 旋转矩阵rotx( Θ)、roty( Θ)、rotz( Θ
    • 使用t2r提取旋转分量
    • 使用r2t()由旋转矩阵得到齐次变换矩阵
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
    展开全文
  • 坐标转换最全Matlab工具箱,matlab坐标转换函数,matlab源码.zip.zip
  • 从矩形转换为极坐标图像,再从极坐标转换为矩形。 图像处理工具箱仅用于加载和显示图像 V0.1 2007 年 12 月 16 日(创建),Prakash Manandhar pmanandhar@umassd.edu
  • 程序包含两个函数,其中[Gaussian_X,Gaussian_Y]=convert84BLToGauss(longitude,latitude) 函数将经纬度转为o-xy坐标;[longitude,latitude]=convert84GaussToBL(X,Y) 函数将o-xy坐标转为经纬度;选用的6度带宽。
  • 七参数坐标转换工具(可在WGS84、北京54、西安80、CGCS2000坐标系中任意两个转换),也可以自定义参数转换
  • 所以给出的图像我自己的例子,我使用CART2POL将像素x/y坐标从笛卡尔坐标转换为极坐标。在第一个图中,我显示了点的位置,第二个图中我绘制了原始图像和极坐标图。请注意,我正在使用图像处理工具箱中的WARP函数。在...

    这不是很清楚你正在尝试做的,这就是为什么我在做......

    所以给出的图像我自己的例子,我使用CART2POL将像素x/y坐标从笛卡尔坐标转换为极坐标。

    在第一个图中,我显示了点的位置,第二个图中我绘制了原始图像和极坐标图。

    请注意,我正在使用图像处理工具箱中的WARP函数。在引擎盖下,它使用SURF/SURFACE函数来显示纹理映射的图像。

    % load image

    load clown;

    img = ind2rgb(X,map);

    %img = imread(...); % or use any other image

    % convert pixel coordinates from cartesian to polar

    [h,w,~] = size(img);

    [X,Y] = meshgrid(1:w,1:h);

    [theta,rho] = cart2pol(X, Y);

    Z = zeros(size(theta));

    % show pixel locations (subsample to get less dense points)

    XX = X(1:8:end,1:4:end);

    YY = Y(1:8:end,1:4:end);

    tt = theta(1:8:end,1:4:end);

    rr = rho(1:8:end,1:4:end);

    subplot(121), scatter(XX(:),YY(:),3,'filled'), axis ij image

    subplot(122), scatter(tt(:),rr(:),3,'filled'), axis ij square tight

    % show images

    figure

    subplot(121), imshow(img), axis on

    subplot(122), warp(theta, rho, Z, img), view(2), axis square

    e1b1cbf195f843a113f6218df0668921.png

    cd23814f253da48bd6bf18f80770bd08.png

    编辑

    正如我最初所说,问题是不明确的。你必须以明确的方式描述你想要的映射...

    对于你需要考虑转换到极坐标之前原点所在的位置。前面的例子假设原点是基于(0,0)的轴。与代码不变,其余

    [X,Y] = meshgrid((1:w)-floor(w/2), (1:h)-floor(h/2));

    :假设你想利用图像(w/2,h/2)为原点的中心,那么你会做这个代替。为了更好地说明效果,考虑concentric circles源图像在笛卡尔坐标绘制的,并注意他们是如何映射到直线极坐标用圆的中心为原点时:

    4abf90e36a18548b8b56eecc860ff6d5.png

    编辑

    这里是另一个如何在注释中请求以极坐标显示图像的例子。请注意,我们在反方向pol2cart执行映射:

    [h,w,~] = size(img);

    s = min(h,w)/2;

    [rho,theta] = meshgrid(linspace(0,s-1,s), linspace(0,2*pi));

    [x,y] = pol2cart(theta, rho);

    z = zeros(size(x));

    subplot(121), imshow(img)

    subplot(122), warp(x, y, z, img), view(2), axis square tight off

    beb8a9942cff5430cfbf102dc035610b.png

    同样的效果是更好的展现,如果你用直线给它的输入图像,看看他们在极坐标如何映射(垂直线条变得圆,线和水平线成为从原点出发射线):

    88b661e923731f1848b400726b2cdb2e.png

    展开全文
  • Matlab Robotics Toolbox--坐标变换

    千次阅读 2020-08-11 22:57:38
    坐标变换一般可由旋转变换和平移变换两部分构成,上一篇介绍了Robotics Toolbox旋转变换的相关函数,这一篇介绍坐标系齐次变换的函数。 平移变换 (1)创建平移变换矩阵 T=transl(x,y,z) : 表示能够获取一个分别...

    Matlab Robotics Toolbox–坐标系变换

    摘要

    坐标变换一般可由旋转变换和平移变换两部分构成,上一篇介绍了Robotics Toolbox旋转变换的相关函数,这一篇介绍坐标系齐次变换的函数。

    平移变换

    (1)创建平移变换矩阵

    • T=transl(x,y,z) : 表示能够获取一个分别沿着x,y,z轴平移一段距离得到的4x4齐次变换矩阵。
    • T=transl§ : 表示由经过矩阵(或向量)p=[x,y,z]的平移得到的其次变换矩阵。如果p为(Mx3)的矩阵,则T为一组其次变换矩阵(4x4xM),其中T(:,:,i)对应于p的第i行。

    例如

    >> T=transl(1,2,3)
    
    T =
    
         1     0     0     1
         0     1     0     2
         0     0     1     3
         0     0     0     1
         
    >>p=[2 3 4];
    >>T=transl(p)
    
    T =
    
         1     0     0     2
         0     1     0     3
         0     0     1     4
         0     0     0     1
    

    (2)使用transl()获取一个矩阵中的平移分量。

    • [x ,y, z]=transl(T): x,y,z是齐次变换矩阵T中的三个分量,是一个1xM的向量。
    • p=transl(T): p是齐次变换矩阵T中平移部分,是一个3xM的矩阵。

    例子

    T=transl(3,4,5)
    
    T =
    
         1     0     0     3
         0     1     0     4
         0     0     1     5
         0     0     0     1
    
    >> p=transl(T)
    
    p =
    
         3
         4
         5
    
    >> [x,y,z]=transl(T)
    
    x =
    
         3
    
    
    y =
    
         4
    
    
    z =
    
         5
    

    旋转坐标变换

    • T=trotx( θ \theta θ): 表示绕X轴旋转 θ \theta θ得到的齐次变换矩阵(4x4);
    • T=troty( θ \theta θ): 表示绕Y轴旋转 θ \theta θ得到的齐次变换矩阵(4x4);
    • T=trotz( θ \theta θ): 表示绕Z轴旋转 θ \theta θ得到的齐次变换矩阵(4x4);

    矩阵分解

    • R=t2r(T):获取齐次变换矩阵T中正交旋转矩阵分量。如果T是一个4x4的旋转矩阵,则R是一个3x3的矩阵,如果R是一个3x3的矩阵,则R是一个2x2的矩阵。

    例子

    >> T=trotx(30)*transl(3,4,5)
    
    T =
    
        1.0000         0         0    3.0000
             0    0.8660   -0.5000    0.9641
             0    0.5000    0.8660    6.3301
             0         0         0    1.0000
    
    >> R=t2r(T)
    
    R =
    
        1.0000         0         0
             0    0.8660   -0.5000
             0    0.5000    0.8660
    
    • T=r2t®可将旋转矩转换为齐次矩阵,获取一个正交旋转矩阵R等价的具有零平移分量的其次变换矩阵。如果R是一个3x3的矩阵,则T是一个4x4的矩阵;如果R是一个2x2的矩阵,则T是一个3x3的矩阵。

    例子

    >> R=rotz(60)
    
    R =
    
        0.5000   -0.8660         0
        0.8660    0.5000         0
             0         0    1.0000
    
    >> T=r2t(R)
    
    T =
    
        0.5000   -0.8660         0         0
        0.8660    0.5000         0         0
             0         0    1.0000         0
             0         0         0    1.0000
    

    例子:坐标系{A}与坐标系{B}重合,首先{B}相对于{A}的 y A y_A yA轴旋转60度,再沿{A}的x轴移动4个单位,最后沿着A的z轴移动3个单位。求点 p 1 p_1 p1在坐标系B中描述为 B p 1 = [ 2 , 4 , 3 ] T ^Bp_1=[2, 4 ,3]^T Bp1=[2,4,3]T,求它在坐标系A中的描述。

    用toolbox仿真如下

    clc
    clear
    close('all')
    %%坐标系正变换,坐标点逆变换
    T1=troty(60);
    T2=transl(4,0,3);
    T=T2*T1;
    p1=[2;4;3;1];
    Ap1=T*p1;
    %%坐标系逆变换,坐标点正变换
    Tr=inv(T);
    Bp1=Tr*p1;
    %%绘图
    T0=transl(0,0,0);
    trplot(T0,'frame','A','color','b');
    axis([-5 5 -5 5 -5 5]);
    hold on,
    tranimate(T0,T,'frame','B','color','r');
    

    在这里插入图片描述

    参考文献

    [1]机器人仿真与编程技术[M].杨辰光,李智军,许杨.北京:清华大学出版社,2018

    展开全文
  • 在理解关节机器人运动学原理的基础上用MATLAB开始做机器人的运动学仿真1.关节参数 要在MATLAB建立机器人对象,首先要了解D-H参数,利用工具箱的LINK和ROBOT函数建立对象。 LINK函数CONVENTION: ...坐标变换 利用工具
  • Matlab坐标转换,用于地理空间ecef enu eci。 与Python类似。 用法 MatMap3D设置为,这意味着import matmap3d语句允许在一定范围内使用此代码。 import matmap3d.* % or add matmap3d. to start of function name [x...
  • 如题所说,直接上程序。...)function[shuchu]=lat_lon2utm(lat_shuru,lon_shuru)%地理经纬度坐标转换为UTM坐标size_shuzu=size(lat_shuru);for i=1:size_shuzu(2)%输入经纬度% lat=29.819206;% lon=116.1332...
  • 时隔写下人生中第一篇博客MATLAB坐标变换(1)已有十个月之久。发现自己到现在还不是真正的搞研究的样子。一方面看往期所留下的博文大多数可看成是搬砖的成分(我只是个老实本分的搬砖人^-^//),再有就是自己...
  • 使用注释函数时,您可能希望将数据空间坐标转换为标准化图形坐标。 如果您使用的是 2D 轴,则可以使用 dsxy2figxy 或 ds2nfu。 但它们不能在 3D 轴上工作。 这个效用函数就是这样做的。 它也适用于 3D 轴和 2D 轴。 ...
  • 这意味着空间旋转使用与先前立方体方向(即线框立方体的轴)相关联的坐标系。 'Axes DCM' 是未旋转惯性系中当前轴方向的方向余弦矩阵。 'Box DCM(惯性)' 是盒子在未旋转惯性系中当前方向的 DCM。 'Box DCM (Axes)...
  • 功能包括: 角度转换deg2rad - 弧度的度数dms2deg - 度、分、秒到度dms2rad - 度、分、秒到弧度rad2deg - 弧度到度rad2dms - 弧度到度、分、秒rad2sec-弧度到秒sec2rad - 秒到弧度坐标转换ell2utm - 椭圆(纬度,...
  • 一个大地坐标与高斯坐标转换工具,能够轻松实现经纬度与现实坐标系的转换。
  •   本篇文章主要与大家分享一下如何使用matlab进行二维和三维空间的位姿描述及坐标系的变换,文章内容处于更新和补充中,(我同时安装了机器人工具箱9.10版本和10.4版本)    一、    1、二维空间的位姿描述 ...
  • 要在MATLAB建立机器人对象,首先要了解D-H参数,利用工具箱的LINK和ROBOT函数建立对象。 LINK函数 L = LINK([alpha A theta D]) L = LINK([alpha A theta D sigma]) L = LINK([alpha A theta D sigma offs...
  • 七参数坐标转换

    2018-08-30 21:41:02
    这是一个通用的地理坐标转换工具,基于七参数转换原理,实现了毫米级别的转换。如实现了WGS-84和XIAN80坐标系统之间的相互转化,经度的转换精度为小数点后7位,纬度的转换精度为小数点后6位,平面坐标的转换精度为...
  • 北京54,西安80,wgs84坐标都是是大地坐标,也就是我们通常所说的...UTM是一种投影坐标,是将球面经纬度坐标经过投影算法转换成的平面坐标,即通常所说的XY坐标. WGS-84坐标系 WGS-84坐标系(World Geodetic Sy...
  • 前几篇博客助中介绍坐标系相关的知识,包括车辆坐标系、相机坐标系、图像坐标系、像素坐标系等等,发现在MATLAB自动工具箱中已经有相对比较全面的介绍(未涉及单目相机相关坐标系),这里仅作翻译以串联起前述文章,...
  • Matlab / Octave中的各种映射功能(DEM操作,地形图,坐标转换等)。 所有工作都无需任何工具箱。 导入/下载 NASA SRTM 全球地形数据文件 (.HGT)。 数字高程模型的阴影浮雕图像图。 导入 ESRI BIL 光栅二进制文件...
  • 大地坐标与空间直角坐标互相转换,空间直角坐标转大地坐标,大地坐标转空间直角坐标

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,951
精华内容 3,180
关键字:

matlab坐标变换工具

matlab 订阅