机器人学DH建模PUMA560机械臂运动学正解Matlab程序

2024-06-04 1945阅读

前言

第一次写博客记录学习有关机械臂内容,最近学习林沛群教授的《机器人学》,和看了《机器人学导论》中有关机械臂运动学正解的内容,并通过Matlab程序实现书中的例子,在此记录学习内容和学习过程中遇到的问题。

正文

1.DH参数

DH参数分为分为标准DH参数和改进DH参数两种

机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第1张坐标系建立步骤:

1,找出各类关节轴,标出(或画出)这些轴线的延长线。在下面的步骤2至步骤5中,仅考虑前后两个相邻的轴线(关节轴机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第2张和关节轴机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第3张

2,找出关节轴机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第2张和关节轴机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第5张之间的公垂线或关节轴机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第2张和关节轴机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第5张的交点,以关节轴机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第2张机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第5张的交点或公垂线与关节轴机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第2张的交点作为连杆坐标系i的原点。

3,规定机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第11张轴沿着关节轴机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第2张的方向

4,规定机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第13张轴沿着公垂线方向,如果关节轴机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第2张和关节轴机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第5张相交,则规定机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第13张轴垂直于关节轴机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第2张和关节轴机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第5张所在平面。

5,按照右手定则确定机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第19张

6,当第一个关节变量为0(机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第2张=0)时,规定坐标系{0}和{1}重合。对于坐标系{机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第21张}(最后一个坐标系),其原点和机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第22张的方向可以任意选取,选取时尽量使连杆参数为0.

(1)标准DH参数(STD-DH)

1,标准DH参数中,机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第23张轴方向由当前z轴机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第11张和前一个坐标系中的z轴机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第3张确定(叉乘)。遵循右手定则,即由机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第3张指向机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第11张,大拇指的方向即为x轴方向。或以机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第11张机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第3张的公垂线作为x轴。

2,建模步骤

(1)将机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第30张机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第3张轴旋转机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第32张,使得机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第30张机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第34张共线

(2)将机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第30张沿着机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第3张轴平移机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第37张,使得机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第30张机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第34张重合

(3)将机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第3张机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第30张轴旋转机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第42张,使得机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第3张机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第11张共线

(4)将机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第3张沿着机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第30张轴方向平移机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第47张,使得机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第3张机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第11张重合

3,STD-DH四个参数变化顺序:机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第50张

4,每个步骤得到的变化矩阵(齐次矩阵)

机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第51张

机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第52张

机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第53张

机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第54张

两个相邻坐标系间变换矩阵

机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第55张

得到:

机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第56张

(2)改进DH参数(MOD-DH)

1,改进DH参数中,机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第23张轴方向由当前z轴机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第3张和后一个坐标系中的z轴机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第59张确定(叉乘)。遵循右手定则,即由机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第3张指向机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第59张,大拇指的方向即为机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第30张轴方向。或以机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第3张机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第59张的公垂线作为x轴。

2,建模步骤

(1)将机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第3张机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第30张轴旋转机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第42张,使得机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第3张机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第11张共线

(2)将机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第3张沿着机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第30张轴方向平移机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第47张,使得机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第3张机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第11张重合

(3)将机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第30张机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第3张轴旋转机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第32张,使得机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第30张机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第34张共线

(4)将机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第30张沿着机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第3张轴平移机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第37张,使得机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第30张机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第34张重合

3,MOD-DH四个参数变化顺序:机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第85张

两个相邻坐标系间变换矩阵

机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第86张

得到:

机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第87张

2.以改进型DH参数建立机械臂运动学模型

机器人学中求PUMA560正解过程中使用的DH参数是改进型DH参数,因此在这里我也使用改进型DH参数来建立机械臂运动学模型

1.根据机械臂关节轴建立机械臂连杆坐标系如下:机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第88张

机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第89张

其中{0}坐标系和{1}坐标系重合,并且坐标系{4},{5},{6}相交于一点,并且交点与三个坐标系原点重合,关节轴4,5,6互相垂直。

2,机械臂MOD-DH参数

1,以坐标系{0}和{1}为例,如图所示:

机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第90张

由于坐标系{0}和{1}重合,因此机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第91张机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第92张机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第93张为0,因为坐标系0是可以旋转的,所以机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第94张为可变参数,因此可以得到第一组DH参数为:机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第91张=0,机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第92张=0,机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第93张=0,机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第94张

2.求坐标系{1}和{2}DH参数

将坐标系{2}用红色标出如图所示:

机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第99张

机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第100张机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第101张轴顺时针旋转90°使得机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第100张机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第103张共线。因为机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第100张机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第103张相交于同个原点,所以可得机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第106张,机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第107张=0。如下图所示:

机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第108张

以前面建立的z轴为基础,将机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第101张沿着机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第100张旋转机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第111张,使得机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第101张机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第113张共线,再平移机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第114张使得机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第101张机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第113张重合。由于机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第111张为可变参数,并且机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第101张机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第113张重合,因此得到第二组DH参数为:机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第106张机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第107张=0,机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第114张=0,机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第111张

3.求坐标轴{2}和{3}DH参数

机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第124张

如图所示:机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第103张机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第126张平行,机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第103张机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第126张相距机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第129张机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第113张机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第131张相距机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第132张,因此可得到DH参数为:机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第133张=0,机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第129张机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第132张机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第136张

同理可以求得{4},{5},{6}坐标轴各自对应的DH参数,最终可得到以下DH参数表

PUMA560机械臂DH参数表

机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第2张机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第138张机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第47张机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第37张机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第32张
1000机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第94张
2机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第143张00机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第111张
30机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第133张机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第132张机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第136张
4机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第143张机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第149张机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第150张机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第151张
5机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第152张00机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第153张
6机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第143张00机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第155张

3.根据DH参数表,求运动学方程

根据前面所求得改进型DH参数的变换矩阵

机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第87张

结合DH参数表,可求得相邻坐标系的变换矩阵如下:

机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第157张

机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第158张

机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第159张

机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第160张

机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第161张

机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第162张

将各个连杆矩阵连乘就可以得到基坐标系{0}和末端坐标系{6}的变换矩阵机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第163张

机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第164张

机器人学DH建模PUMA560机械臂运动学正解Matlab程序 第165张

Matlab程序:

format long
syms d1 d2 d3 d4 d5 d6 
syms theta1 theta2 theta3 theta4 theta5 theta6 
syms theta_i theta_i_1 alpha_i_1 alpha_i d_i a_i_1
syms a1 a2 a3 a4 a5 a6
syms alpha1 alpha2 alpha3 alpha4 alpha5 alpha6
syms r11 r12 r13 r21 r22 r23 r31 r32 r33 Px Py Pz
syms T_i
%机器人学PUMA560机械臂参数
d1 = 0;
d2 = 0;
d3 = 0.149;
d4 = 0.433;
d5 = 0;
d6 = 0;
%连杆长度
a0 = 0;
a1 = 0;
a2 = 0.432;
a3 = 0.02;
a4 = 0;
a5 = 0;
%连杆扭角
alpha0 = 0;
alpha1 = -pi/2;
alpha2 = 0;
alpha3 = -pi/2;
alpha4 = pi/2;
alpha5 = -pi/2;
%----------------------------%
%对θ进行赋值,注意赋值一定要在运算之前
%theta1 = pi/3;
%theta2 = pi/4;
%theta3 = pi/5;
%theta4 = pi/3;
%theta5 = pi/4;
%theta6 = pi/5;
T_i=[cos(theta_i),-sin(theta_i),0,a_i_1;...
    sin(theta_i)*cos(alpha_i_1),cos(theta_i)*cos(alpha_i_1),-sin(alpha_i_1),-sin(alpha_i_1)*d_i;...
    sin(theta_i)*sin(alpha_i_1),cos(theta_i)*sin(alpha_i_1),cos(alpha_i_1),cos(alpha_i_1)*d_i;
    0,0,0,1;
    ];
T0_1=[cos(theta1),-sin(theta1),0,0;
      sin(theta1),cos(theta1),0,0;
      0,0,1,0;
      0,0,0,1];
T1_2=[cos(theta2),-sin(theta2),0,0;
      0,0,1,0;
      -sin(theta2),-cos(theta2),0,0;
      0,0,0,1;];
T2_3=[cos(theta3),-sin(theta3),0,a2;
      sin(theta3),cos(theta3),0,0;
      0,0,1,d3;
      0,0,0,1];
T3_4=[cos(theta4),-sin(theta4),0,a3;
     0,0,1,d4;
     -sin(theta4),-cos(theta4),0,0;
     0,0,0,1];
T4_5=[cos(theta5),-sin(theta5),0,0;
      0,0,-1,0;
      sin(theta5),cos(theta5),0,0;
      0,0,0,1];
T5_6=[cos(theta6),-sin(theta6),0,0;
      0,0,1,0;
      -sin(theta6),-cos(theta6),0,0;
      0,0,0,1];
T0_6=T0_1*T1_2*T2_3*T3_4*T4_5*T5_6 %解得运动学正解

4.使用Matlab机器人工具箱验证是否正确

Matlab机器人工具箱代码:

format long
syms d1 d2 d3 d4 d5 d6 
syms theta1 theta2 theta3 theta4 theta5 theta6 
syms theta_i theta_i_1 alpha_i_1 alpha_i d_i a_i_1
syms a1 a2 a3 a4 a5 a6
syms alpha1 alpha2 alpha3 alpha4 alpha5 alpha6
syms r11 r12 r13 r21 r22 r23 r31 r32 r33 Px Py Pz
syms T_i
%机器人学PUMA560机械臂参数
d1 = 0;
d2 = 0;
d3 = 0.149;
d4 = 0.433;
d5 = 0;
d6 = 0;
%连杆长度
a0 = 0;
a1 = 0;
a2 = 0.432;
a3 = 0.02;
a4 = 0;
a5 = 0;
%连杆扭角
alpha0 = 0;
alpha1 = -pi/2;
alpha2 = 0;
alpha3 = -pi/2;
alpha4 = pi/2;
alpha5 = -pi/2;
L1=Link([0     d1       a0       alpha0     ],'modified');%设置连杆参数,注:使用的是改进型DH参数,所以最后参数为'modified'
L2=Link([0     d2       a1       alpha1     ],'modified');
L3=Link([0     d3       a2        alpha2     ],'modified');
L4=Link([0     d4       a3       alpha3     ],'modified');
L5=Link([0     d5       a4       alpha4     ],'modified');
L6=Link([0     d6       a5       alpha5     ],'modified');
robot=SerialLink([L1 L2 L3 L4 L5 L6],'name','RobotArm');%将不同连杆链接起来
robot.plot([pi/3,pi/4,pi/5,pi/3,pi/4,pi/5]);%输出机器人模型,后面的六个角为输出时的theta姿态,用弧度制
robot.display();%打印出机器人D-H参数表
T=robot.fkine([pi/3,pi/4,pi/5,pi/3,pi/4,pi/5])%求机械臂正解
robot.teach%机械臂示教
%使用改进型DH法,根据机器人学中对PUMA560机械臂建模方法实现运动学正解

可以通过代入不同的关节角度,使用机械臂工具箱和自己写的求正解的程序,对比验证是否有误。

参考资料

【Matlab 六自由度机器人】定义标准型及改进型D-H参数建立机器人模型(附MATLAB建模代码)_知道机器人标准的d-h参数如何利用matlab进行六轴机器人仿真模型建立-CSDN博客

《机器人学导论》

台大机器人学之运动学——林沛群(含课件+书籍)_哔哩哔哩_bilibili

机器人工程师进阶之路(二)6轴机械臂D-H法建模 - 知乎 (zhihu.com)(有点小错误,注意看评论区)


    免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

    目录[+]