精华内容
下载资源
问答
  • 齐次坐标变换

    万次阅读 多人点赞 2018-01-24 18:15:17
    齐次坐标 在二维平面内,我们用一对坐标值(x,y)来表示一个点在平面内的确切位置,或者说是用一个向量(x,y)来标定一个点的位置。 假如变换前的点的坐标为(x,y),变换后的点坐标为(x*,y *),这个变换过程...

    齐次坐标

    在二维平面内,我们用一对坐标值(x,y)来表示一个点在平面内的确切位置,或者说是用一个向量(x,y)来标定一个点的位置。

    假如变换前的点的坐标为(x,y),变换后的点坐标为(x*,y *),这个变换过程可以写成如下矩阵形式:
    这里写图片描述
    这种用三维向量表示二维向量,或者一般而言,用一个 n+1维的向量表示一个 n 维向量的方法称为齐次坐标表示法。

    n 维向量的变换是在 n+1 维的空间进行的,变换后的 n 维结果是被反投回到特定维空间内而得到的。
    这里写图片描述

    为什么要采用齐次坐标

    在笛卡尔坐标系内,向量(x,y)是高于 z=0 平面上的点,而向量(x,y,1)是位于 z=1 的等高平面上的点。

    对于图形来说,没有实质性的差别,但是却给后面的矩阵运算提供了可行性和方便性。

    采用了齐次坐标表示法,就可以统一的把二维线性变换表示为如下所示的规格化形式:
    这里写图片描述
    对于一个图形,可以用顶点表来描述图形的几何关系,用连边表来描述图形的拓扑关系。所以对图形的变化,最后转变成,只是要变化图形的顶点表。

    平移变换

    平移是指将 P 点沿直线路径从一个坐标位置移到另一个坐标位置的重定位过程。
    这里写图片描述
    齐次坐标计算形式如下:
    这里写图片描述
    平移是一种不产生变形而移动物体的刚体变换,即物体上的每个点移动相同数量的坐标。

    比例变换

    这里写图片描述
    齐次坐标计算形式如下:
    这里写图片描述
    缩放系数Sx,Sy可赋予任何正整数。值小于1,则会缩小物体的尺寸。值大于1,则会放大物体。都指定为1,物体尺寸就不会改变。

    (1)Sx = Sy 比例
    这里写图片描述
    (2)Sx <> Sy 比例
    这里写图片描述
    当 Sx = Sy 时,比例变换成为整体比例变换,用以下矩阵进行计算:
    这里写图片描述

    对称变换

    对称变换也称为反射变化或镜像变换,变换后的图形是原图形关于某一轴线或原点的镜像。
    这里写图片描述
    这里写图片描述
    关于x轴对称
    这里写图片描述
    关于y轴对称
    这里写图片描述
    旋转变换
    这里写图片描述
    这里写图片描述
    这里写图片描述
    这里写图片描述
    这里写图片描述

    错切变换

    在图形学的应用中,有时需要产生弹性物体的变形处理,这就要用到错切变换。
    这里写图片描述
    变换矩阵中的非对角线元素大都为0,若变换矩阵中的非对角元素不为0,则意味着 x,y 同时对图形的变换起作用。也就是说,变换矩阵中非对角线元素起着把图形沿 x 方向或 y 方向错切的作用。
    这里写图片描述
    x 值或 y 值越小,错切量越小。x 值或 y 值越大,错切量越大。其变换矩阵为:
    这里写图片描述
    沿x方向错切

    这里写图片描述

    复合变换

    复合变换是指图形做一次以上的几何变换,变换结果是每次的变换矩阵相乘。

    从另一方面看,任何一个复杂的几何变换都可以看做是基本几何变换的组合形式。

    二维复合平移变换

    P 点经过两次连续平移后,其变换矩阵可以写成:
    这里写图片描述
    二维复合比例变换

    P 点经过两个连续比例变换后,其变换矩阵可写成:
    这里写图片描述

    二维复合旋转变换

    P 点经过两个连续旋转变换后,其变换矩阵可写成:
    这里写图片描述

    坐标系之间的变换

    图形变换经常需要从一个坐标系变换到另外一个坐标系。
    这里写图片描述
    相对任意参考点的二维几何变换
    这里写图片描述

    二维变换矩阵

    这里写图片描述
    这里写图片描述
    看了网上一大堆讲解,坐标变换公式,看起来都挺有道理的,就没找到一篇能举个实例。本人数学基础一般,还是无法确定公式这样用是不是用对了,所以只好用最原始的方法,手工绘制了一个坐标系,参照坐标系比较计算结果和实际结果。

    Matlab示例

    这里写图片描述
    代码:

    %已知里程计坐标系3个点odom_a,odom_b,odom_c,在odom_a中观察到点p1。
    odom_a = [3,1,0]; p1=[-9,-4,0];
    odom_b = [-1, 2,pi/4];
    odom_c = [-2,-2,pi/2];
    %求点p相对点odom_B,odom_C的坐标p1b,p1c?
    
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    % 解:
    %     | cos(th) -sin(th) x |
    % M=  | sin(th) cos(th)  y |
    %     | 0       0        1 |
    
    Ma2o = [cos(odom_a(1,3)),-sin(odom_a(1,3)), odom_a(1,1);
            sin(odom_a(1,3)), cos(odom_a(1,3)), odom_a(1,2);
            0,0,1];
    Mb2o = [cos(odom_b(1,3)),-sin(odom_b(1,3)), odom_b(1,1);
            sin(odom_b(1,3)), cos(odom_b(1,3)), odom_b(1,2);
            0,0,1];
    Mc2o = [cos(odom_c(1,3)),-sin(odom_c(1,3)), odom_c(1,1);
            sin(odom_c(1,3)), cos(odom_c(1,3)), odom_c(1,2);
            0,0,1];
        
    %p1a为p1点的齐次坐标表示
    p1a = [p1(1,1);p1(1,2);1];                      %[-9,-4,1]
    p1b = inv(Mb2o) * Ma2o * p1a;					%[-5*sqrt(2), 0,1]
    p1b_th = p1(1,3) + (odom_a(1,3) - odom_b(1,3)); %-pi/4
    
    p1c = inv(Mc2o) * Ma2o * p1a;					%[-1,4,1]
    p1c_th = p1(1,3) + (odom_a(1,3) - odom_c(1,3)); %-pi/2
    
    %验证,
    %假设在odom_a中观察到点p2,
    p2=[-4,-7,-pi/2];
    
    %p1a为p2点的齐次坐标表示
    p2a = [p2(1,1); p2(1,2); 1];                    %[-4,-7,1]
    p2b = inv(Mb2o) * Ma2o * p2a;                   %[-8/sqrt(2), -8/sqrt(2),1]
    p2b_th = p2(1,3) + (odom_a(1,3) - odom_b(1,3)); %-3*pi/4
    
    p2c = inv(Mc2o) * Ma2o * p2a;                   %[-4,-1,1]
    p2c_th = p2(1,3) + (odom_a(1,3) - odom_c(1,3)); %-pi
        
    
    

    总结

    1、如果机器人在全局坐标系下有A,B三个点。然后在A点观察到一个目标p,p是机器人坐标系下的点。问机器人到达B坐标点时,点p相对于机器人的位置?

    假设pa为点p在A点观察到的坐标,Ma2o为点a在全局坐标的表示,
    那么
    p2o = Ma2o * pa------------------(1)
    p2o就表示点a在全局坐标的表示,那机器人到达B坐标点时,点p相对于机器人的位置为p2b
    p2b = inv(Mb2o) * Ma2o * pa ------------------(2)

    这里inv(Mb2o)可以这么理解,
    假设机器人到达B坐标点时,点p相对于机器人的位置为pb,那么有
    p2o = Mb2o * pb ------------------(3)
    由于点p在全局坐标中只有一个点,机器人在A,B点观察到的都是同一个点,所以(1)=(3),于是有
    Ma2o * pa = Mb2o * pb;
    根据矩阵乘法移项,得到
    pb = (Mb2o)^-1 * Ma2o * pa;
    其中pb即为需要求解的值,Matlab中矩阵的逆为inv(Mb2o) = (Mb2o)^-1。

    如果你有那更好的方法和加快齐次坐标理解的方法和资料,欢迎在下方留言,感谢!

    展开全文
  • 机器人技术视频讲座(64讲)-机器人技术06-坐标变换,齐次坐标变换zip,机器人技术视频讲座(64讲)-机器人技术06-坐标变换,齐次坐标变换
  • 机器人——齐次坐标变换

    千次阅读 2018-03-17 08:37:16
    机器人齐次坐标变换   变换定义为在空间中产生运动,目标坐标系的状态发生变化。 坐标变换一般有:   平移 绕轴旋转 平移旋转的复合运动 1平移 平移过程中,目标坐标系的空间状态没有发生改变,即目标坐标...

    机器人齐次坐标变换

     

    变换定义为在空间中产生运动,目标坐标系的状态发生变化。

    坐标变换一般有:

     

    • 平移
    • 绕轴旋转
    • 平移旋转的复合运动

    1平移

    平移过程中,目标坐标系的空间状态没有发生改变,即目标坐标轴的单位方向向量没有发生改变,

    但是目标坐标的相对于参考坐标系原点的向量OP会发生变换,新的目标坐标系会通过坐标系左乘

    变换矩阵得到。

    F为目标坐标系4X4齐次矩阵:

    F=[nx    ox    ax    px]

        [ny    oy    ay    py]

        [nz    oz    az    pz]

        [ 0      0     0      1 ]

     

    T为4X4变换矩阵:

     

    T = [1 0 0 0  dx]

           [0 1 0 0 dx]

           [0 0 1 0 dx]

           [0 0 0 0 1  ]

    目标坐标系更新(左乘):

    Fnew = F X T

    符号描述为:

    Fnew  = Trans (dx,dy,dz) X Fold;

     

    2绕轴旋转

    OP向量坐标为:

    P = [px py p]'

     

     

    rx为绕X轴旋转3X3旋转矩阵

    rx=[1      0         0  ]

          [0   Cosθ  -Sinθ]

          [0   Sinθ   Cosθ]

     

     


    ry为绕Y轴旋转3X3旋转矩阵

    ry=[Cosθ   0   Sinθ ]

          [0         1     0    ]

          [-Sinθ    0   Cosθ]

     

     

    rz为绕Z轴旋转3X3旋转矩阵

    rz=[Cosθ   -Sinθ   0 ]

          [Sinθ     Cosθ   0 ]

          [   0          0      1 ]

    绕X轴旋转θ

    Pnew = P x rx

    符号表示为:

    Pnew = Rot(x,θ)

     

    绕Y轴旋转θ

    Pnew = P x ry

     

    符号表示为:

    Pnew = Rot(x,θ)

     

    绕Z轴旋转θ

     

    Pnew = P x rx

     

    符号表示为:

    Pnew = Rot(x,θ)

     

     

    3.平移旋转的复合运动

    依次左乘相应的平移和旋转量

    Pnew = Rot(x,θ) X Trans (dx,dy,dz) X Fold

    MATLAB中直观表示:

     

     

     

     

    需要的基础知识:


    1线性代数


    2matlab绘图操作


    绘图代码:

    https://download.csdn.net/download/yangming2466/10291956

    点击打开链接

     

    展开全文
  • 平移齐次坐标变换: 空间某点由矢量描述。其中,为轴上的单位矢量。此点可用平移齐次变换表示为: 旋转齐次坐标变换: 表,表,非齐次去掉第四行第四列就行了。 绕x轴作转角为的旋转变换: 绕y轴作转角为...

    平移齐次坐标变换: 

    空间某点由矢量 a\boldsymbol{i}+b\boldsymbol{j}+c\boldsymbol{k} 描述。其中,\boldsymbol{i,j,k} 为轴 x,y,z 上的单位矢量。此点可用平移齐次变换表示为: 

    Trans(a,b,c)=\begin{bmatrix} 1 & 0 & 0 & a \\ 0 & 1 & 0 & b\\ 0 & 0 & 1 & c \\ 0 & 0 & 0 & 1 \end{bmatrix}

     

    旋转齐次坐标变换: 

    s  sinc 表 cos ,非齐次去掉第四行第四列就行了。

    绕x轴作转角为\theta的旋转变换:

    Rot(x,\theta )=\begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & c\theta & -s\theta & 0 \\ 0 & s\theta & c\theta & 0 \\ 0 & 0 & 0 & 1 \end{bmatrix}

    绕y轴作转角为\theta的旋转变换: 

    Rot(y,\theta )=\begin{bmatrix} c\theta & 0 & s\theta & 0 \\ 0 & 1 &0 & 0 \\ -s\theta & 0 & c\theta & 0 \\ 0 & 0 & 0 & 1 \end{bmatrix}

    绕z轴作转角为\theta的旋转变换: 

    Rot(z,\theta )=\begin{bmatrix} c\theta & -s\theta & 0 & 0 \\ s\theta & c\theta & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{bmatrix}

     

    如果先让物体绕z轴旋转90°,接着绕y轴旋转90°,再沿x轴方向平移1个单位(右手坐标系,右手定则旋转),则: 

    T=Trans(1,0,0)Rot(y,90)Rot(z,90)

     

    eul2rotm()      (MatlabR2016a)

    eul=[angle1 angle2 angle3]

    eul2rotm(eul,'ZYX') 是先绕X轴旋转angle3再绕Y轴旋转angle2再绕Z轴旋转angle1。( eul2rotm中为弧度)

     

    如:

    eul = [pi pi/2 pi/2];
    rotm1 = eul2rotm(eul,'ZYX'); 
    rotm1*[0 1 0]'

    表示  [0;1;0],先绕X轴旋转90°,再绕Y轴旋转90°,最后绕Z轴旋转180°(右手坐标系,右手定则旋转),结果为 [-1;0;0]。

    也可以:

    eul2 = rad2deg([pi pi/2 pi/2]);
    rotm2 = rotz(eul2(1)) * roty(eul2(2)) * rotx(eul2(3));
    rotm2*[0 1 0]'

    结果也为 [-1;0;0](rotx,y,z 中为角度)。

     

    点绕坐标系旋转 与 坐标系自身旋转

    坐标系不动,点绕坐标系旋转:

     [-1,0,0]'= Rotz(180)*Roty(90)*Rotx(90)*[0,1,0]' 

    上式表示:坐标系C下的点 P_{c}=[0,1,0]'先绕C的X轴旋转90°,再绕C的Y轴旋转90°,最后绕C的Z轴旋转180°(右手坐标系,右手定则旋转),则新的坐标(坐标系C下)P_{c}^{'} =[-1,0,0]'

    即:R_{xyz} = Rotz(180)*Roty(90)*Rotx(90),P_{c}^{'} = R_{xyz}*P_{c}

     

    同一个点,坐标系自身的旋转:

    设一开始坐标系C1和坐标系C2重合,且坐标系C2经过先绕C1的X轴旋转90°再绕C1的Y轴旋转90°最后绕C1的Z轴旋转180°的变换后为新的坐标系C2(等同于坐标系C2经过先绕C2的Z轴旋转180°到C2',再绕C2'的Y轴旋转90°到C2'',最后绕C2''的X轴旋转90°)。

    则这个过程可视作坐标系C1 到 (新)坐标系C2的旋转变换整个过程坐标系C1未动):

    _{c2}^{c1}\textrm{R}=Rotz(180)*Roty(90)*Rotx(90),此时 _{c2}^{c1}\textrm{R} 也描述 (新)坐标系C2相对于坐标系C1的方位。

    若将[0,1,0]'看做坐标系C2下的坐标P_{c2}, 将[-1,0,0]'看做坐标系C1下的点P_{c1},则P_{c1}= _{c2}^{c1}\textrm{R} *P_{c2},即坐标系C1中的点P_{c1}可在坐标系C2中表示为P_{c2} (反之亦然)。       

    具体应用:若世界坐标系W到相机坐标系C的旋转变换为_{C}^{W}\textrm{R},相机坐标系下有空间点P_{C},则该空间点在世界坐标系下可表示为P_{W}= _{C}^{W}\textrm{R} *P_{C}

     

    refer: https://blog.csdn.net/lixujie666/article/details/82153503 中的 一、1.

              https://zhuanlan.zhihu.com/p/108789534

              https://blog.csdn.net/yukinoai/article/details/90573008

              https://blog.csdn.net/zb1165048017/article/details/71104241

     

     

     

    展开全文
  • function T=zhengjie_for_T(Q) %T为4*4矩阵,Q为1*6向量 RX=[1 0 0;0 cos(Q(4)) -sin(Q(4));0 sin(Q(4)) cos(Q(4))]; RY=[cos(Q(5)) 0 sin(Q(5));0 1 0;-sin(Q(5)) 0 cos(Q(5))]; RZ=[cos(Q(6)) -sin(Q(6)) 0;...

    function T=zhengjie_for_T(Q)
    %T为4*4矩阵,Q为1*6向量
    RX=[1 0 0;0 cos(Q(4)) -sin(Q(4));0 sin(Q(4)) cos(Q(4))];
    RY=[cos(Q(5)) 0 sin(Q(5));0 1 0;-sin(Q(5)) 0 cos(Q(5))];
    RZ=[cos(Q(6)) -sin(Q(6)) 0;sin(Q(6)) cos(Q(6)) 0; 0 0 1];
    R=RZ*RY*RX;
    T=[R Q(1:3)';
        0 0 0 1];
     

    展开全文
  • 齐次坐标与几何变换 齐次坐标与几何变换 齐次坐标与几何变换 齐次坐标与几何变换
  • 在前面几个章节中,我们仅仅讨论了两个坐标系之间的坐标转换矩阵,涉及到四元素、方向余弦阵、欧拉旋转等各种表现形式,但并没有涉及到两个坐标系的平移。 首先看两个坐标系之间的坐标转换矩阵: [xiyizi]=M⋅...
  • 仿射变换齐次坐标

    2019-06-25 15:52:07
    仿射变换齐次坐标October 12, 2011gcchengLeave a commentGo to comments仿射变换(Affine Transformation)和齐次坐标系(Homogeneous Coordinate)是计算机图形学中经常碰到...
  • 为什么引入齐次坐标?在实际中,我们的向量(流形)是不变的,但是可以由多个坐标,当同一个流形在不同坐标系中变换时,通常是先旋转后平移,比如,三维坐标的变换: 从有三个坐标,a,b,c,我们知道坐标a变换到...
  • 齐次坐标与物体变换操作

    千次阅读 2015-04-22 15:31:48
    齐次坐标 我们在上一小节中介绍了平移、旋转和缩放三种几何变换,同时我们导出出它们各自的变换矩阵为: 平移变换 P‘=P+Tm 旋转变换 P’=P X Tr 缩放变换 P‘=P X Ts 可以看出,平移变换的处理方法与其他两种...
  • 四元数 四元数(quaternion)可以看作中学时学的复数的扩充,它有三个虚部。形式如下: 四元数(quaternion)可以看作中学时学的复数的扩充,它有三个虚部。形式如下: ...4*4变换矩阵 四元数到4*4矩阵 ...
  • 齐次坐标和矩阵变换

    2010-11-07 13:57:00
    一直对齐次坐标这个概念的理解不够彻底,只见大部分的书中说道“齐次坐标在仿射变换中非常的方便”,然后就没有了后文,今天在一个叫做“三百年 重生”的博客上看到一篇关于透视投影变换的探讨的文章,其中有对齐次...
  • 二维点坐标齐次变换 二维点坐标齐次变换 二维点坐标齐次变换 二维点坐标齐次变换
  • 齐次坐标就是在欧氏空间表示的基础上增加一个额外的变量w来表示原本的坐标(X,Y),并同时需要令x = Xw , y = Yw ,最终得到齐次坐标(x, y, w),w为非0变量,只有点在无穷远处时才等于0 而当该点在二维空间的
  • 齐次坐标系(Homogeneous Coordinate) 定义: 所谓线性变换是指两个线性空间的映射,一个变换是线性变换,必须满足两个条件,也就是我们经常说的线性条件: additivity homogeneity 理解: 在《3D数学基础:...
  • 图形变换齐次坐标

    千次阅读 2019-02-16 21:37:15
    1、图形变换是计算机图形学基础内容之一 几何变换,投影变换,视窗变换 线性变换,属性不变,拓扑关系不变。 作用: 把用户坐标系与设备坐标系联系起来; 可由简单图形生成复杂图形; 可用二维图形表示三维形体; ...
  • 在机器人及自动驾驶中,经常用齐次变换矩阵将旋转和平移进行统一。 前面的文章也介绍过齐次变换矩阵,本文算是一个总结。1. SE(3)将旋转矩阵和平移向量写在同一个矩阵中,形成的矩阵,称为special Euclidean group,...
  • 齐次坐标

    2020-05-19 21:49:05
    齐次坐标  在数学里,齐次坐标(homogeneous coordinates),或投影坐标(projective coordinates)是指一个用于投影几何里的坐标系统。该词由奥古斯特·费迪南德·...使用齐次坐标可让计算机进行仿射变换,通常其投

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,045
精华内容 418
关键字:

齐次坐标变换