精华内容
下载资源
问答
  • 齐次坐标变换
    千次阅读
    2018-03-17 08:37:16

    机器人齐次坐标变换

     

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

    坐标变换一般有:

     

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

    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

    点击打开链接

     

    更多相关内容
  • 齐次坐标变换

    万次阅读 多人点赞 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。

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

    展开全文
  • 齐次坐标变换齐次变换矩阵、ROS2、ROS、机器人

    本系列教程作者:小鱼
    公众号:鱼香ROS
    QQ交流群:139707339
    教学视频地址:小鱼的B站
    完整文档地址:鱼香ROS官网
    版权声明:如非允许禁止转载与商业用途。
    公众号

    7.3.1 齐次坐标变换

    前面几节中,小鱼带你一起学习了使用TF进行坐标的变换,也带你通过旋转和平移求解了下坐标的变换关系,但计算的过程中旋转和平移是分开计算的,那有没有一种方法,可以让旋转矩阵和平移向量合并到同一个矩阵里呢?

    答案是有的,我们可以将 3 ∗ 3 3*3 33的旋转矩阵和 3 ∗ 1 3*1 31的平移矩阵进行组合,并添加一行(0,0,0,1)使其变成一个 4 ∗ 4 4*4 44的方阵,其组合方式如下:

    有旋转矩阵
    R = [ r 11 r 12 r 13 r 21 r 22 r 23 r 31 r 32 r 33 ] (旋转矩阵) R = \begin{bmatrix}{r_{11}}&{r_{12}}&{r_{13}}\\{r_{21}}&{r_{22}}&{r_{23}}\\{r_{31}}&{r_{32}}&{r_{33}}\\\end{bmatrix} \tag{旋转矩阵} R=r11r21r31r12r22r32r13r23r33()
    平移矩阵
    P = [ x y z ] (平移矩阵) P= \begin{bmatrix}{x}\\{y}\\{z}\\\end{bmatrix} \tag{平移矩阵} P=xyz()

    合并成齐次变换矩阵
    T = [ r 11 r 12 r 13 x r 21 r 22 r 23 y r 31 r 32 r 33 z 0 0 0 1 ] (齐次矩阵) T = \begin{bmatrix}{r_{11}}&{r_{12}}&{r_{13}}&{x} \\{r_{21}}&{r_{22}}&{r_{23}}&{y} \\{r_{31}}&{r_{32}}&{r_{33}}&{z} \\0&0&0&1 \\\end{bmatrix} \tag{齐次矩阵} T=r11r21r310r12r22r320r13r23r330xyz1()

    为什么要这样写,我们可以简单的推导一下,矩阵是支持分块运算的,我们将上面的矩阵进行分块
    T = [ R P 0 1 ] (齐次矩阵) T = \begin{bmatrix}{R}&{P} \\0&1\\\end{bmatrix} \tag{齐次矩阵} T=[R0P1]()
    假设 B A T ^A_BT BAT表示A坐标系到B坐标的齐次变换,B坐标系下的点C坐标为 C B P ^B_CP CBP,求C在A坐标系下的坐标 C A P ^A_CP CAP

    我们将 B A T ^A_BT BAT C B P ^B_CP CBP上,可得
    C A P = [ B A R B A P 0 1 ] [ C B P 1 ] = B A R C B P + B A P ^A_CP= \begin{bmatrix}{^A_BR}&{^A_BP}\\0&1\\\end{bmatrix} \begin{bmatrix}{^B_CP}\\1\\\end{bmatrix} = {^A_BR}{^B_CP}+^A_BP CAP=[BAR0BAP1][CBP1]=BARCBP+BAP
    根据前面学习的平移+旋转复合坐标变换公式,正确的结果如下
    C A P = B A R C B P + B A P ^A_CP = {^A_BR}{^B_CP}+^A_BP CAP=BARCBP+BAP
    你会发现,两者最终结果完全相同,也就是说,我们的平移加旋转复合变换,可以直接用齐次变换矩阵代替。

    1.齐次变换矩阵特性

    接着我们来探索一下齐次变换矩阵的一些特性

    2.1.齐次变换矩阵的符号表示

    一般使用H或者T来表示齐次变换矩阵,矩阵的左上角标明参考坐标系,矩阵左下角标定目标坐标系,比如 B A T ^A_BT BAT表示A坐标系到B坐标系的变换关系(平移+旋转)

    2.2.齐次变换矩阵的逆的几何含义

    就像矩阵的逆一样,齐次变换矩阵也有逆,其的逆也有对应的几何含义,比如

    比如 B A T ^A_BT BAT表示A坐标系到B坐标系的变换关系

    那么

    B A T ^A_BT BAT的逆 B A T − 1 = A B T ^A_BT^{-1}=^B_AT BAT1=ABT表示B坐标系到A坐标系的变换关系

    2.3.齐次变换矩阵的乘法的几何含义

    3.3.1齐次矩阵与平移向量相乘

    齐次矩阵与平移向量相乘,即可求出某个向量在另一坐标系下的表示,上面例子中即是如此。

    3.3.2齐次矩阵与齐次矩阵相乘

    齐次矩阵与齐次矩阵相乘,可以转换不同坐标系之间的关系,比如:
    B A T C B T = C A T ^A_BT^B_CT=^A_CT BATCBT=CAT
    比如当我们有一个六自由度的机械臂,知道每两个相邻关节之间的关系,那么就可以通过其次矩阵相乘的方法求出,关节6在关节0下的位置和姿态:
    1 0 T 2 1 T 3 2 T 4 3 T 5 4 T 6 5 T = 6 0 T ^0_1T^1_2T^2_3T^3_4T^4_5T^5_6T=^0_6T 10T21T32T43T54T65T=60T

    3.练习

    练习小鱼放到了下一节了,毕竟不希望大家用手来算~


    技术交流&&问题求助:

    • 微信公众号及交流群:鱼香ROS

    • 小鱼微信:AiIotRobot

    • QQ交流群:139707339

    • 版权保护:已加入“维权骑士”(rightknights.com)的版权保护计划

    作者介绍:

    我是小鱼,机器人领域资深玩家,现深圳某独脚兽机器人算法工程师一枚
    初中学习编程,高中开始接触机器人,大学期间打机器人相关比赛实现月入2W+(比赛奖金)
    目前在输出机器人学习指南、论文注解、工作经验,欢迎大家关注小鱼,一起交流技术,学习机器人

    展开全文
  • 采用机器人运动学中的齐次坐标变换来描述工艺系统各组成部分的空间位姿关系,建立了工艺系统各组件的几何误差累积模型.将制造过程看作是刀具轨迹形成的点集更新被加工零件点集的过程,加工后零件点集组成了新的齐次...
  • P在齐次坐标系下的坐标为ori(2,1,1)。 根据旋转矩阵 代入θ=-45/180*PI 得旋转矩阵。 由题意得平移矩阵T为 1 0 1;0 1 2;0 0 1; 先旋转,再平移:ori=T *R *ori,得到计算结果。 三.代码实现 #include #...

    一.作业描述

    在这里插入图片描述

    二.思路分析

    整理了课程相关的一点内容。
    在这里插入图片描述
    现在开始分析这道题目。
    P在齐次坐标系下的坐标为ori(2,1,1)。
    根据旋转矩阵在这里插入图片描述
    代入θ=-45/180*PI 得旋转矩阵。
    由题意得平移矩阵T为 1 0 1;0 1 2;0 0 1;
    先旋转,再平移:ori=T *R *ori,得到计算结果。

    三.代码实现

    #include<cmath>
    #include<eigen3/Eigen/Core>
    #include<eigen3/Eigen/Dense>
    #include<iostream>
    
    int main(){
    
        Eigen::Matrix3f rotate,transform;
        Eigen::Vector3f ori(2.0f,1.0f,1.0f);
        float r=-45.0/180.0*M_PI;
        rotate<<cos(r),sin(r),0,-1.0f*sin(r),cos(r),0,0,0,1;
        transform<<1,0,1,
                   0,1,2,
                   0,0,1;
        ori=rotate*ori;
        std::cout<<r<<std::endl;
        std::cout<<"rotate:"<<std::endl;
        std::cout<<rotate<<std::endl;
        std::cout<<"after rotate"<<std::endl;
        std::cout<<ori<<std::endl;
        ori=transform*ori;
        std::cout<<"after transform"<<std::endl;
        std::cout<<ori<<std::endl;
        return 0;
    }
    

    在这里插入图片描述

    展开全文
  • 机器人技术视频讲座(64讲)-机器人技术06-坐标变换齐次坐标变换zip,机器人技术视频讲座(64讲)-机器人技术06-坐标变换齐次坐标变换
  • 把裁剪空间齐次坐标转换到屏幕空间的齐次坐标 原理: 裁剪空间下的齐次坐标,x和y的取值范围是[-w, w], w=-z。 而屏幕空间下的齐次坐标取值范围是[0, w], w=-z。所以核心代码就是 float2 screenPos = (clipPos.xy...
  • 齐次坐标就是在欧氏空间表示的基础上增加一个额外的变量w来表示原本的坐标(X,Y),并同时需要令x = Xw , y = Yw ,最终得到齐次坐标(x, y, w),w为非0变量,只有点在无穷远处时才等于0 而当该点在二维空间的
  • 齐次坐标概念&&透视投影变换推导 透视投影是3D固定流水线的重要组成部分,是将相机空间中的点从视锥体(frustum)变换到规则观察体(Canonical View Volume)中,待裁剪完毕后进行透视除法的行为。在算法中它是通过透视...
  • 本节从基础的欧式空间、投影空间、笛卡尔坐标、向量、矩阵、线性空间着手介绍,从向量空间的点和向量的表示法着手说明齐次坐标概念引入的过程,并介绍了齐次坐标的作用。
  • 针对陀螺框架高精度垂直孔系加工精度影响因素多且无综合分析测评方法的工程实际,采用齐次坐标变换的分析方法,建立了坐标镗床上应用转台精镗陀螺框架孔的同轴度误差模型,设计实现了误差分析软件,对陀螺框架的同轴...
  • 平移齐次坐标变换: 空间某点由矢量描述。其中,为轴上的单位矢量。此点可用平移齐次变换表示为: 旋转齐次坐标变换: 表,表,非齐次去掉第四行第四列就行了。 绕x轴作转角为的旋转变换: 绕y轴作转角为...
  • 关于齐次坐标的理解

    千次阅读 多人点赞 2018-10-12 14:19:46
    (https://blog.csdn.net/janestar/article/details/44244849)[第二篇:齐次坐标的理解](http://www.cnblogs.com/csyisong/archive/2008/12/09/1351372.html)[第三篇:如何通俗的解释仿射变换?]...
  • 坐标变换(6)—齐次变换矩阵

    千次阅读 2020-03-26 09:27:14
    在机器人及自动驾驶中,经常用其次变换矩阵将旋转和平移进行统一。 前面的文章也介绍过其次变换矩阵,本文算是一个总结。 1. SE(3) 将旋转矩阵和平移向量写在同一个矩阵中,形成的4×44\times44×4矩阵,称为special...
  • 为什么要引入齐次坐标齐次坐标的意义(一)

    万次阅读 多人点赞 2019-07-09 19:43:30
    问题:两条平行线可以相交于一点 在欧氏几何空间,同一平面的两条平行线不能相交,这是我们都熟悉的一种场景。 然而,在透视空间里面,两条平行线可以相交,例如:...几何的一个子集合),2维笛卡尔坐标可以表示为...
  • 使用齐次坐标的众多目的之一是捕捉无穷大的概念。在欧几里德坐标系中,无限是不存在的。 数学家发现,如果使用无穷大的概念,许多几何概念和计算可以大大简化。当我们转向曲线 和曲面设计时,这将变得非常清楚。如果...
  • 一、2D变换 ...对称变换就是变换前的图片和变换后的图片按坐标轴对称,例如按Y轴的对称变换结果如下 图形上每一点的Y轴坐标不变,但是横坐标都加了个负号 写成矩阵的形式就是这样的 3、剪
  • 相机标定(二)——图像坐标与世界坐标转换 - 古月居
  • 图形变换齐次坐标

    千次阅读 2019-02-16 21:37:15
    1、图形变换是计算机图形学基础内容之一 几何变换,投影变换,视窗变换 线性变换,属性不变,拓扑关系不变。 作用: 把用户坐标系与设备坐标系联系起来; 可由简单图形生成复杂图形; 可用二维图形表示三维形体; ...
  • 齐次坐标

    千次阅读 2019-08-05 11:49:28
    本文是一些关于齐次坐标只是的整合。 https://www.sohu.com/a/258317807_100007727 http://www.songho.ca/math/homogeneous/homogeneous.html https://blog.csdn.net/VenoBling/article/details/87794400 ...
  • 四元数 四元数(quaternion)可以看作中学时学的复数的扩充,它有三个虚部。形式如下: 四元数(quaternion)可以看作中学时学的复数的扩充,它有三个虚部。形式如下: ...4*4变换矩阵 四元数到4*4矩阵 ...
  • 动手学坐标变换齐次矩阵生成、(四元数+欧拉角)、齐次坐标运算、ROS、ROS2
  • 术语: ...虽然四元数跟齐次坐标很像,都是4D矢量,通常用(X,Y,Z,W)来表示,但是,四元数和齐次坐标是不同的概念,使用的领域也不同。 这篇文章跟“四元数”没有一毛钱关系。 类比2D: 了解3D..
  • 机器人学—数学基础—齐次坐标齐次变换 - 豆丁网
  • 借鉴来自 计算机图形学 北京大学出版社 倪明田 吴良芝 编著 csdn积分下载链接

空空如也

空空如也

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

齐次坐标变换

友情链接: JPush Utils.zip