精华内容
下载资源
问答
  • 正运动学
    千次阅读
    2021-09-15 21:44:57

    正运动学 与 逆运动学 区别

    正运动学

    已知连杆几何参数(长度)和关节变量(旋转角度),求解末端执行器(机械夹爪)相对于参考坐标系位置(平移量)和姿态(旋转量)。

    此过程为:建立机器人运动学方程。

    逆运动学

    已知连杆几何参数(长度),给定末端执行器(机械夹爪)相对于参考坐标系位置(平移量)和姿态(旋转量),求解能使机器人的末端执行器达到该位姿的关节变量(旋转角度)。

    此过程为:求解机器人运动学方程。

    更多相关内容
  • UR5机械臂正运动学完整c++代码,说明详见文章https://blog.csdn.net/sinat_32804425/article/details/122125911?spm=1001.2014.3001.5502
  • 针对川崎工业机器人手臂FS03N构型特点,采用DH法建立了机械臂的连杆坐标系,得到了以关节角度为变量的正运动学方程,采用SolidWorks建立了机械臂的三维实体模型。为了验证运学模型的正确性及直观地观察机械臂各部分的...
  • 实验目的: 1) 基于robotics机器人库构建机器人; 2) 对构建的机器人进行运动学分析; 3) 了解和熟悉机器人正运动学的作用。
  • ABB IRB-120 型机器人 运动学正解 运动学逆解 工作空间绘制
  • 本程序为汽车运动学中的两轮车正运动学仿真,该程序为我自己的课程作业,压缩包中含有两个文件,一个为主函数,一个是运行程序
  • 以UR5为例,机器人的运动学求解源码,使用PeterCorke的robotics toolbox做计算结果验证,并附有robotics toolbox的GitHub源码和本地、在线安装包。
  • 简单的数值解,写的不太好,将就看吧,真就是这样4073408nan/20201111/a42b924be56629904ab1d94f90409520.zip
  • 机器人学,PUMA560正运动学公式和逆运动学公式的 matlab 代码,包含符号运行结果和数值仿真代码。
  • 机器人运动学正解 运动学逆解 DH建模 工作空间
  • 这是本人从课程设计上整理下来的机器人学D-H正运动学仿真,当时修复了几个bug然后就能用了,原始代码不完全是本人编成,但是本人进行了一些维护改进。另外这是MATLAB的m文件代码。亲测可运行使用。
  • 机器人学导论 二、正运动学,MDH法

    千次阅读 2022-02-15 16:45:07
    机器人学导论 二、正运动学前言关节与连杆编号连杆参数连杆的描述连杆连接的描述关节变量连杆坐标系中间连杆坐标系建立首尾连杆坐标系建立首坐标系尾坐标系连杆参数与连杆坐标系连杆变换MDH法使用步骤 前言 本篇学习...

    前言

    本篇学习机械臂的正运动学,MDH法。

    关节与连杆

    关节joint,连杆link,是机械臂的基本组成结构。

    关节包括转动关节和移动关节,一般仅有一个自由度。

    一个关节把相邻两连杆连接,n个关节把n+1个连杆连接起来,具有n个自由度。

    编号

    把固定基座作为第0个连杆,机械臂末端的连杆作为第n个连杆。

    连杆参数

    连杆的描述

    两个相邻关节轴之间的公垂线的长度,称为连杆的长度。

    两个相邻关节轴之间形成的角度,称为连杆的转角。
    在这里插入图片描述
    上图中,连杆i-1的长度是其近端关节轴i-1与远端关节轴i之间的公垂线长度 a i − 1 a_{i-1} ai1

    连杆i-1的转角是其近端关节轴i-1与远端关节轴i形成的角度 α i − 1 \alpha_{i-1} αi1,至于角度的正负号,可以根据后面建立坐标系时再确定。

    连杆连接的描述

    两个相邻连杆之间的距离,称为连杆偏距。

    两个相邻连杆绕公共关节轴旋转的夹角,称为关节角。

    在这里插入图片描述
    上图中,关节i是连杆i-1和连杆i的公共关节。

    由于实际的连杆是弯曲的,可以将公垂线段 a i − 1 a_{i-1} ai1 a i a_i ai 看作代替曲连杆的直连杆i-1,i

    直连杆i-1,i之间的距离是关节i的连杆偏距 d i d_i di

    直连杆i-1沿关节轴i旋转到直连杆i的角度是关节角 θ i \theta_i θi

    关节变量

    一个连杆可以使用上面的连杆长度、连杆转角、连杆偏距、关节角四个参数确定。

    对于转动关节,关节角可变,另三个参数不变。

    对于移动关节,连杆偏距可变,另三个参数不变。

    可变的参数称为关节变量。

    连杆坐标系

    连杆坐标系用于描述相邻连杆之间的相对位置关系。

    连杆坐标系编号与连杆编号相同,称为 { i } \{i\} {i}

    中间连杆坐标系建立

    为连杆i建立坐标系:

    以关节轴i作为Z轴,以连杆iZ轴的交点作为原点,以连杆i作为X轴指向关节轴i+1,以右手定则确定Y轴

    例外:如果连杆i的长度 a i = 0 a_i=0 ai=0(此时连杆i,i+1Z轴相交),以交点作为原点,以两个Z轴所在平面的垂线作为X轴,方向可以有两种选择,而 α i \alpha_i αi的符号就由X轴方向决定。

    每个坐标轴的建立都要满足右手定则。
    在这里插入图片描述
    上图中,可以按这个顺序来建立坐标系:

    首先找到所有的关节轴i-1,i

    然后确定坐标系 { i − 1 } \{i-1\} {i1},以关节轴作为 Z ^ i − 1 \hat Z_{i-1} Z^i1,直连杆i-1作为 X ^ i − 1 \hat X_{i-1} X^i1,再右手定则确定 Y ^ i − 1 \hat Y_{i-1} Y^i1

    然后确定坐标系 { i } \{i\} {i}

    首尾连杆坐标系建立

    对于首尾连杆0,n,有特殊的建系方法。

    首坐标系

    坐标系 { 0 } \{0\} {0}在基座上,一般作为参考系。

    第一个关节变量为0时,规定坐标系 { 0 } \{0\} {0} { 1 } \{1\} {1}重合。

    当第一个关节为转动关节, d 1 = 0 d_1=0 d1=0;第一个关节为移动关节, θ 1 = 0 \theta_1=0 θ1=0

    尾坐标系

    坐标系 { n } \{n\} {n}的原点和x轴方向可以任意选取,但要尽量使得连杆参数为0。

    连杆参数与连杆坐标系

    按照上面的建系方法,可以把连杆参数重新定义:

    • a i a_i ai连杆长度:沿 X ^ i \hat X_i X^i,从 Z ^ i \hat Z_i Z^i移动到 Z ^ i + 1 \hat Z_{i+1} Z^i+1的距离
    • α i \alpha_i αi连杆扭转角:绕 X ^ i \hat X_i X^i轴,把 Z ^ i \hat Z_i Z^i旋转到 Z ^ i + 1 \hat Z_{i+1} Z^i+1的角度
    • d i d_i di连杆偏距:沿 Z ^ i \hat Z_i Z^i,从 X ^ i − 1 \hat X_{i-1} X^i1移动到 X ^ i 1 \hat X_{i1} X^i1的距离
    • θ i \theta_i θi关节角:绕 Z ^ i \hat Z_i Z^i轴,把 X ^ i − 1 \hat X_{i-1} X^i1旋转到 X ^ i \hat X_{i} X^i的角度

    设定 a i > 0 a_i>0 ai>0,其它参数可正可负。

    上面建立连杆坐标系和连杆参数的方式称为MDH法(Modified Denavit–Hartenberg)。

    DH法建立的坐标系并不是唯一的。

    连杆变换

    连杆参数可用于相邻杆之间的相对位姿计算。
    在这里插入图片描述
    上图中,考虑坐标系 { i − 1 } , { i } \{i-1\},\{i\} {i1},{i}之间的变换 i − 1 i T ^i_{i-1}T i1iT,建立中间坐标系 { P } , { Q } , { R } \{P\},\{Q\},\{R\} {P},{Q},{R},则有:
    i i − 1 T =   R i − 1 T   Q R T   P Q T   i P T ^{i-1}_iT = \ ^{i-1}_RT \ ^R_{Q}T \ ^Q_PT \ ^P_{i}T ii1T= Ri1T QRT PQT iPT
    上面的变换,可以看作是把 X ^ i \hat X_i X^i变换为 X ^ i − 1 \hat X_{i-1} X^i1,则有:
    i i − 1 T = R X ( α i − 1 ) D X ( a i − 1 ) R Z ( θ i ) D Z ( d i ) ^{i-1}_iT = R_X(\alpha_{i-1})D_X(a_{i-1})R_Z(\theta_i)D_Z(d_i) ii1T=RX(αi1)DX(ai1)RZ(θi)DZ(di)
    或者将每个中间坐标系的变换都写出来:
    i P T = [ 1 0 0 0 0 1 0 0 0 0 1 d i 0 0 0 1 ]   P Q T = [ cos ⁡ θ 1 − sin ⁡ θ 1 0 0 sin ⁡ θ 1 cos ⁡ θ 1 0 0 0 0 1 0 0 0 0 1 ]   Q R T = [ 1 0 0 0 0 1 0 a i − 1 0 0 1 0 0 0 0 1 ]   R i − 1 T = [ 1 0 0 0 0 cos ⁡ α i − 1 − sin ⁡ α i − 1 0 0 sin ⁡ α i − 1 cos ⁡ α i − 1 0 0 0 0 1 ] ^P_iT = \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & d_i \\ 0 & 0 & 0 & 1 \\ \end{bmatrix} \\ \quad \\ \ ^Q_PT = \begin{bmatrix} \cos \theta_1 & -\sin \theta_1 & 0 & 0 \\ \sin \theta_1 & \cos \theta_1 & 0 & 0 \\ 0 & 0 & 1 &0 \\ 0 & 0 & 0 & 1 \\ \end{bmatrix} \\ \quad \\ \ ^R_QT = \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & a_{i-1} \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \\ \end{bmatrix} \\ \quad \\ \ ^{i-1}_RT = \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & \cos \alpha_{i-1} & -\sin \alpha_{i-1} & 0 \\ 0 & \sin \alpha_{i-1} & \cos \alpha_{i-1} & 0 \\ 0 & 0 & 0 & 1 \\ \end{bmatrix} \\ \quad \\ iPT=10000100001000di1 PQT=cosθ1sinθ100sinθ1cosθ10000100001 QRT=1000010000100ai101 Ri1T=10000cosαi1sinαi100sinαi1cosαi100001
    得到 i i − 1 T ^{i-1}_iT ii1T的一般形式:
    在这里插入图片描述

    MDH法使用步骤

    1. 找到所有关节轴;
    2. 按顺序依次建立中间连杆的坐标系;
    3. 确定首尾坐标系;
    4. 写出DH参数;
    5. 计算正运动学矩阵。

    后记

    本篇是机器人学中的正运动学,采用的是MDH法。

    后续会有Matlab示例编程。

    展开全文
  • 推导过程见我的文章 https://blog.csdn.net/sinat_32804425/article/details/122125911?spm=1001.2014.3001.5502,有详细公式说明,以及结果验证。可自己建立一个工程,下载配置好EIGEN库,就可以运行。
  • 该代码可以实现UR5运动学的求解,其中逆运动学为8组解,正运动学输入六个关节角的角度值,UR5的DH坐标即可
  • 双臂Matlab仿真建模:正运动学

    千次阅读 多人点赞 2020-10-11 21:38:50
    文章目录双臂Matlab仿真建模写在前面PUMA560构型双臂UR构型双臂如何进行轨迹仿真Matlab正运动学建模PUMA560构型UR构型最后就可以愉快的画轨迹了~(当然 过程挺艰辛) 写在前面 感谢我对象刘博士的大力支持(〃‘▽’...

    双臂Matlab仿真建模

    写在前面

    学习代码都记录在个人github上,欢迎关注~

    感谢我对象刘博士的大力支持(〃‘▽’〃)(主要是源码)~知乎:OpenRobotSL

    在这里插入图片描述

    实际上,如果就把双臂中的每个臂当做单个的机械臂进行规划,那么用matlab进行双臂建模就没有太大必要,只需要对每个单臂进行单独规划即可。但是,如果涉及到双臂之间的协同轨迹规划,如上图所示,这时用matlab进行双臂建模仿真就会显得事半功倍。本文先只介绍双臂在matlab中的正运动学建模,后续会补充在matlab中如何进行双臂轨迹规划。

    PUMA560构型双臂

    熟悉Peter大神工具箱的都知道,该工具箱使用dh连杆建模,建立双臂模型,需要建立腰关节连杆,并将两个单机械臂组合到腰关节上。如下图所示,本文针对puma560构型双臂采用改进DH建模(具体建模步骤见博客机器人学回炉重造(1):正运动学、标准D-H法与改进D-H法的区别与应用(附ABB机械臂运动学建模matlab代码)),此时腰关节连杆坐标系就是基坐标系X0Y0Z0,此时的肩关节坐标系X2Y2Z2就是单臂机器人的基坐标系,然后就从肩关节坐标系开始建立单臂的DH坐标系,也可以认为是单独的腰关节连杆坐标系+单臂的DH坐标系,需要注意的是建立整体DH坐标系时腰关节与肩关节之间需要加-pi/2角度偏置,目的是将puma560构型的机械臂垂下去,下图中的虚线X2即为不加偏置的肩关节坐标系,实线X2即为加了偏置角度后的肩关节坐标系,d=肩宽/2。

    在这里插入图片描述

    对应的matlab正运动学仿真如下所示:

    在这里插入图片描述

    腰关节与肩关节之间也可以不加偏置角度,这样的话,两个坐标系之间的转换就可以画成如下所示。

    在这里插入图片描述

    对应的matlab正运动学仿真如下所示:

    在这里插入图片描述

    UR构型双臂

    本文UR采用标准DH建模,建模过程全网可搜,标准DH坐标系建立如下。

    在这里插入图片描述

    在这里插入图片描述

    分析上图,黑色坐标系X0Y0Z0是世界坐标系,也可认为这是腰关节坐标系,红色虚线坐标系X1Y1Z1是肩关节坐标系(也就是UR的基坐标系{0}),此时腰关节与肩关节不存在角度偏置,matlab仿真建模就是如下所示

    在这里插入图片描述

    亮蓝色实线坐标系X1Y1Z1是加了pi/2偏置角度后的肩关节坐标系,matlab建模仿真如下所示

    在这里插入图片描述

    如何进行轨迹仿真

    进行轨迹仿真的最重要一点就是,如何将世界(全局坐标系)坐标系下(也为腰关节坐标系)的轨迹映射到肩关节坐标系(机械臂的基坐标系)下,弄明白这一点,使用matlab进行双臂轨迹算法验证就简单很多了~

    以PUMA560腰关节与肩关节有-pi/2角度偏置的双臂构型为例,如下图所示,

    在这里插入图片描述

    世界(全局,也为腰关节)坐标系下的位姿表示为 n 0 T ^0_{n}T n0T,这就是我们算法验证时所给定的轨迹位姿,都是相对于世界坐标系的;现在的问题就是,将轨迹位姿映射到肩关节(机械臂基坐标系)下,也就是求 n 2 T ^2_{n}T n2T。这个就很简单了,即 n 2 T = i n v ( 2 0 T ) ∗ n 0 T ^2_{n}T=inv(^0_{2}T)*^0_{n}T n2T=inv(20T)n0T 2 0 T ^0_{2}T 20T即为单臂基坐标系相对于腰关节坐标系的姿态变换矩阵,根据腰关节和肩关节之间的坐标变换,可以分析得出,腰关节坐标系先绕X1轴(自己的)旋转pi/2,再绕动轴Z1旋转-pi/2,最后再沿着动轴Z1移动d长度,故 2 0 T = t r o t x ( 90 ) ∗ t r o t z ( − 90 ) ∗ t r a n s z ( d ) ^0_{2}T=trotx(90)*trotz(-90)*transz(d) 20T=trotx(90)trotz(90)transz(d)。按照上述步骤即可将全局坐标系下的位姿映射到单臂局部坐标系下了。

    同理,UR也可如此。

    Matlab正运动学建模

    PUMA560构型

    clear all;
    clc;
    % 双臂 每个单臂是puma560构型
    L(1)=Link([0       -0.25        0        pi/2      0     -pi/2  ],'modified'); % 关节1这里的最后一个量偏置-pi/2设置是为了将puma560构型的臂垂直下去
    L(2)=Link([0       0          0        -pi/2      0    0  ],'modified');
    L(3)=Link([0       0           0.2        0          0    -pi/2 ],'modified');
    L(4)=Link([0       0.248        0           -pi/2      0     ],'modified');
    L(5)=Link([0       0           0           -pi/2       0     ],'modified');
    L(6)=Link([0       0            0           pi/2      0     ],'modified');
    %                  0.262
    p560L=SerialLink(L,'name','LEFT');
    p560L.tool=[0 -1 0 0;
                   1 0 0 0;
                   0 0 1 0.262 ;
                   0 0 0 1;]; 
               
    R(1)=Link([0       0.25        0        pi/2      0     -pi/2   ],'modified');  % 关节1这里的最后一个量偏置-pi/2设置是为了将puma560构型的臂垂直下去
    R(2)=Link([0      0          0           -pi/2      0    0  ],'modified');
    R(3)=Link([0       0           0.2        0          0     -pi/2],'modified');
    R(4)=Link([0       0.248         0           -pi/2      0     ],'modified');
    R(5)=Link([0       0           0           -pi/2       0     ],'modified');
    R(6)=Link([0       0           0           pi/2      0     ],'modified');
    %                  0.262
    p560R=SerialLink(R,'name','RIGHT');
    p560R.tool=[0 -1 0 0;
                   1 0 0 0;
                   0 0 1 0.262 ;
                   0 0 0 1;]; 
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   platform
    
    platform=SerialLink([0 0 0 0],'name','platform','modified');%腰部关节
    platform.base=[1 0 0 0;
                   0 1 0 0;
                   0 0 1 0 ;
                   0 0 0 1;]; %基座高度
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   R
    
    pR=SerialLink([platform,p560R],'name','R'); % 单独右臂模型,加装底座
    
    view(3)
    hold on
    grid on
    axis([-1.2, 1.2, -1.2, 1.2, -1.2, 1.2])
    
    pR.plot([0 0 0 0 0 0 0]) % 第一个量固定为0,目的是为了模拟腰关节,左臂下同
    hold on
    
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   L
    pL=SerialLink([platform,p560L],'name','L'); % 单独左臂模型,加装底座
    
    pL.plot([0 0 0 0  0 0 0])
    hold on
    

    UR构型

    clear all;
    clc;
    % 双臂 每个单臂是UR构型
    figure(2)
    dis_shoulder = 0.2;
    % theta d ,a , alpha
    L(1)=Link([0       0.0891+dis_shoulder    0        pi/2      0     pi/2  ]); % 关节1这里的最后一个量偏置
    L(2)=Link([0       0          -0.425      0         0     0]);
    L(3)=Link([0       0          -0.392      0         0     0 ]);
    L(4)=Link([0       0.1091        0        pi/2      0     -pi/2]);
    L(5)=Link([0       0.0946        0       -pi/2      0     0]);
    L(6)=Link([0       0.0823        0        0      0     0]);
    %                  0.262
    urL=SerialLink(L,'name','LEFT');
    % urL.tool=[0 -1 0 0;
    %                1 0 0 0;
    %                0 0 1 0.262 ;
    %                0 0 0 1;]; 
               
    R(1)=Link([0       -0.0891-dis_shoulder   0        pi/2      0     pi/2  ]); % 关节1这里的最后一个量偏置
    R(2)=Link([0       0          -0.425      0         0     0]);
    R(3)=Link([0       0          -0.392      0         0     0 ]);
    R(4)=Link([0       0.1091        0        pi/2      0     -pi/2]);
    R(5)=Link([0       0.0946        0       -pi/2      0     0]);
    R(6)=Link([0       0.0823        0        0      0     0]);
    %                  0.262
    urR=SerialLink(R,'name','RIGHT');
    % urR.tool=[0 -1 0 0;
    %                1 0 0 0;
    %                0 0 1 0.262 ;
    %                0 0 0 1;]; 
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   platform
    offset_ang = 0;
    dis_waist = 0;
    platform=SerialLink([0 dis_waist 0 pi/2+offset_ang 0 0],'name','platform');%腰部关节
    platform.base=[1 0 0 0;
                   0 1 0 0;
                   0 0 1 0 ;
                   0 0 0 1;]; %基座高度
               
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   R
    pR=SerialLink([platform,urR],'name','R'); % 单独右臂模型,加装底座
    
    view(3)
    hold on
    grid on
    axis([-1.5, 1.5, -1.5, 1.5, -1.5, 1.5])
    
    pR.plot([0 0 0 0 0 0 0]) % 第一个量固定为0,目的是为了模拟腰关节,左臂下同
    hold on
    
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   L
    pL=SerialLink([platform, urL],'name','L'); % 单独左臂模型,加装底座
    
    pL.plot([0 0 0 0 0 0 0])
    hold on
    

    最后就可以愉快的画轨迹了~(当然 过程挺艰辛)

    在这里插入图片描述

    在这里插入图片描述

    也可以做双臂协同

    在这里插入图片描述

    展开全文
  • 二连杆运动学建模,matlab程序非simulink。
  • 正运动学建模方法

    千次阅读 2021-03-27 17:05:40
    回顾前面,通过二连杆引入了机器人建模一些内容,其中包括机器人运动的建模、机器人逆运动学建模、机器人动力学建模,以及涉及一点机器人控制的方法。大体了解了机器人领域需要的知识。详细的内容还需根据相关书籍...

    【前言】
    回顾前面,通过二连杆引入了机器人建模一些内容,其中包括机器人正运动的建模、机器人逆运动学建模、机器人动力学建模,以及涉及一点机器人控制的方法。大体了解了机器人领域需要的知识。详细的内容还需根据相关书籍进一步丰富。重回机器人正运动学,本篇的主要目的在于掌握机器正运动学的建模方法。
    【正运动学】
    以平面二自由度机械臂为例,正运动学的目的在于:在已知机械臂的关节变量θ1、θ2的情况下,求解机械臂末端的位姿。涉及目标的位姿,需要考虑的目标坐标系的建立(毕竟姿态和位置是相对坐标系而言);而坐标系的建立可以任意选择,每个人建立坐标系的方式不同,将不利于行业人员的交流。因此,为了解决这个问题,业内制定了一套约定----Denavit-Hartenberg约定。
    1.1 Denavit-Hartenberg约定
    简称DH约定,用于正运动的分析;其主要的约束条件有:
    (DH1)坐标轴xi垂直于坐标轴zi-1;
    (DH2)坐标轴xi与坐标轴zi-1相交;
    通过这两条约定,存在唯一的a、d、θ、α使得相邻的坐标齐次变换矩阵可以表示为:
    A=Rot(θ)Trans(d)Trans(a)Rot(α)
    关于这四个变量以下图为例,有以下定义:
    在这里插入图片描述
    图1满足DH1与DH2约定的坐标系
    a-----表示连杆长度,z0与z1之间沿公共法线x1测得得距离;
    α----表示连杆扭曲,一个关节轴相对另一个关节轴绕公共法线旋转的角度;
    d----表示连杆偏置,O1到x1与z0交点的距离;
    θ-----表示关节角度,垂直于Z0平面内x0与x1的角度
    1.2 建模实例
    (1)DH约定建模
    根据DH约定,对以下平面肘型机械臂进行正运动学建模。
    在这里插入图片描述

    第一步:编号
    需注意坐标系、杆和关节变量的下标的编号:
    a.坐标系从0开始编号,O0,O1,…On,其中O0为基坐标系;
    b.关节变量从1开始编号,θ1,θ2,…θn+1;
    c.杆从1开始编号,L1,L2,…Ln+1;
    第二步:根据以上绘制DH表
    第三步:写出齐次变换矩阵;
    第四步:根据链式法则写出齐次变换矩阵(4*4);
    第五步:根据变换矩阵写出杆件各连接点的坐标;

    clc;clear;
    close all;
    global ulink;
    %定义机械臂参数
    ulink.l1=5;
    ulink.l2=5;
    ulink.sida1 = 45/180*pi;
    ulink.sida2 = 90/180*pi;
    %----------------------------------------------
    %       | a_i   | alfa_i  |  d_i  |  sida_i
    %   1   |   l1  |  0      |   0   |   sida1
    %   2   |   l2  |  0      |   0   |   sida2
    %--------------------------------------------
    %DH约定:xi与zi-1相交且垂直
    %DH齐次变换矩阵
    % Ai =
    %         [ cos(sida_i), -cos(alfa_i)*sin(sida_i),  sin(alfa_i)*sin(sida_i), a_i*cos(sida_i)]
    %         [ sin(sida_i),  cos(alfa_i)*cos(sida_i), -sin(alfa_i)*cos(sida_i), a_i*sin(sida_i)]
    %         [           0,              sin(alfa_i),              cos(alfa_i),             d_i]
    %         [           0,                        0,                        0,               1]
    syms sida_i alfa_i a_i d_i
    %计算齐次矩阵
    sida_i = ulink.sida1;
    alfa_i = 0;
    d_i =0;
    a_i = ulink.l1;
    A0_1 = [cos(sida_i)  -sin(sida_i)*cos(alfa_i)    sin(sida_i)*sin(alfa_i)   a_i*cos(sida_i);
            sin(sida_i)   cos(sida_i)*cos(alfa_i)   -cos(sida_i)*sin(alfa_i)  a_i*sin(sida_i) ;
                0         sin(alfa_i)                cos(alfa_i)                    d_i       ;
                0                 0                       0                          1             
        ];
    sida_i = ulink.sida2;
    alfa_i = 0;
    d_i =0;
    a_i = ulink.l2;
    A1_2 = [cos(sida_i)  -sin(sida_i)*cos(alfa_i)    sin(sida_i)*sin(alfa_i)   a_i*cos(sida_i);
            sin(sida_i)   cos(sida_i)*cos(alfa_i)   -cos(sida_i)*sin(alfa_i)  a_i*sin(sida_i) ;
                0         sin(alfa_i)                cos(alfa_i)                    d_i       ;
                0                 0                       0                          1             
        ];
    A0_2 = A0_1*A1_2;
    %绘图 plot([x1,x2],[y1,y2],'k')
    figure(1)
    plot([0,A0_1(1,4)],[0,A0_1(2,4)],'k','Linewidth',5)
    axis equal
    hold on
    plot([A0_1(1,4),A0_2(1,4)],[A0_1(2,4),A0_2(2,4)],'r','Linewidth',5)  
    

    (2)向量法建模
    第一步:编号,参考DH建模;
    第二步:对基坐标的各坐标轴用单位向量表示(正交);
    第三步:依次写出Oi坐标系各轴在Oi-1坐标系的表示;
    第四步:根据链式法则写出旋转变换矩阵(3*3);
    第五步:将各杆用向量表示;

    clc;clear;
    close all;
    global ulink;
    %定义机械臂参数
    ulink.l1=5;
    ulink.l2=5;
    ulink.sida1 = 45/180*pi;
    ulink.sida2 = 90/180*pi;
    %向量法
    %定义世界坐标系Oo
    x0=[1,0,0]';
    y0=[0,1,0]';
    z0=[0,0,1]';
    %定义局部坐标系O1(相对O0而言)
    x1=x0*cos(ulink.sida1)+y0*sin(ulink.sida1);
    y1=-x0*sin(ulink.sida1)+y0*cos(ulink.sida1);
    z1=z0;
    %定义局部坐标系O2(相对O1而言)
    x2=x0*cos(ulink.sida1)+y0*sin(ulink.sida1);
    y2=-x0*sin(ulink.sida1)+y0*cos(ulink.sida1);
    z2=z0;
    %写出齐次变换矩阵
    R0_1 = [x1,y1,z1];
    R1_2 = [x2,y2,z2];
    R0_2 = A0_1*A1_2;
    O0_1=ulink.l1*R0_1(:,1);
    O0_2=O0_1+ulink.l2*R0_2(:,1)
    %绘图
    figure(1)
    plot([0,A0_1(1,4)],[0,A0_1(2,4)],'k','Linewidth',5)
    axis equal
    hold on
    plot([A0_1(1,4),A0_2(1,4)],[A0_1(2,4),A0_2(2,4)],'r','Linewidth',5)  
    

    前期内容代码已更新至公众号
    在这里插入图片描述

    展开全文
  • 【发那科FANUC机器人】机器人正运动学方程的D-H表示法.pdf【发那科FANUC机器人】机器人正运动学方程的D-H表示法.pdf【发那科FANUC机器人】机器人正运动学方程的D-H表示法.pdf【发那科FANUC机器人】机器人正运动学...
  • 【发那科FANUC机器人】机器人正运动学方程的D-H表示法.docx【发那科FANUC机器人】机器人正运动学方程的D-H表示法.docx【发那科FANUC机器人】机器人正运动学方程的D-H表示法.docx【发那科FANUC机器人】机器人正运动学...
  • matlab_对5R1T机器人进行正运动学仿真,计算6个自由度,逆运动学,使用Pieper
  • PyKDL---正运动学和逆运动学

    千次阅读 2020-06-24 10:47:07
    PyKDL---正运动学和逆运动学正运动学 串联机械臂运用过程中常用到正逆运动学,正运动学指的是已知关节空间变量关节角或角速度,求取操作空间的位置或速度;逆运动学是指已知操作空间的位姿或速度,求取关节空间的...
  • 该文件以6自由度puma560为例说明机器人的一种运动学的编程方法(正运动学为DH法,逆运动学为解析解),以及机器人工具箱(matlab robotic toolbox)初步的运动学使用方法。
  • ppt机器人运动学(PPT60页).ppt
  • 1.运动学分析-正运动学

    千次阅读 2020-07-19 20:53:54
    1.1机器人的D-H表示法和正运动学 D-H建模是一种对机器人连杆和关节建模的非常简单的方法,适用于任何机器人结构,而不用考虑机器人的结构顺序和复杂程度。D-H建模可以用于直角坐标、球坐标和柱坐标的变换。 机器人由...
  • 正运动学问题是已知机械手的关节旋转变量,计算出机械手的末端位姿。 逆运动学问题是已知末端位姿,求机械手个关节旋转变量。 机械手的正运动学问题和机械手的逆运动学问题 ------关于机械手的一些知识,我之前介绍...
  • 机械臂正运动学-DH参数-Python快速实现 文章目录机械臂正运动学-DH参数-Python快速实现前言:整体思路流程:学习资料核心概念:DH参数的理解。DH参数的定义:建立坐标系矩阵变换公式:最后直接上代码吧: 前言: ...
  • 13. 机器人正运动学---雅克比矩阵(1)

    千次阅读 多人点赞 2020-09-20 10:57:02
    总结来说: DH参数可以把关节角映射为末端执行器的位置和姿态 雅克比矩阵可以把关节转速映射为笛卡尔空间的速度和角速度 DH参数和雅克比矩阵可以认为是机器人正运动学的基础。 4. 求解雅克比矩阵 怎么求解雅克比矩阵...
  • 机器人学——3.2-正运动学

    千次阅读 2020-04-26 19:43:11
    机械臂的正运动学通常表述为如下的函数形式: ξE=K(q) \xi_E=\mathcal{K}(q) ξE​=K(q)它表明末端执行器的位姿是基于关节坐标的一个函数。若使用齐次变换,其表达式将是由之前推导的连杆坐标系变换矩阵方程所给的...
  • 机械臂正运动学方程的DH表示法及逆运动学PPT学习教案.pptx
  • 正运动学 0. 何为运动学?何为正运动学运动学主要研究的就是机械臂的运动特性(位置、速度、加速度等),但是不考虑使机械臂产生运动时施加的力和力矩(这部分是动力学)。而正运动学的研究即是将关节变量作为自...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 237,342
精华内容 94,936
关键字:

正运动学

友情链接: 14_ethernet_test.rar