工业六轴机器人常见的MOD(改进)-DH模型建立方法


一、M-DH模型

在这里插入图片描述
在这里插入图片描述

二、形式1

clear;clc;close all;
%杆长参数设置
L1=160;L2=449.5;L3=580;L4=200;L5=640;L6=228;
%        theta(z)   d(z)     a(x)     alpha(x)  
RL1=Link([  0       L2       0        0       ],'modified');
RL2=Link([  0       0        L1       -pi/2   ],'modified');RL2.offset=-pi/2;
RL3=Link([  0       0        L3       0       ],'modified');
RL4=Link([  0       L5       L4       -pi/2   ],'modified');
RL5=Link([  0       0        0        pi/2    ],'modified');
RL6=Link([  0       L6       0        -pi/2   ],'modified');
Robot_6=SerialLink([RL1,RL2,RL3,RL4,RL5,RL6],'name','Robot');
Robot_6.teach;

运行结果:
在这里插入图片描述

三、形式2

L1=160;L2=449.5;L3=580;L4=200;L5=640;L6=228;
RL1=Link('revolute','d',L2,'a',0,'alpha',0,'modified');
RL2=Link('revolute','d',0,'a',L1,'alpha',-pi/2,'modified');RL2.offset=-pi/2;
RL3=Link('revolute','d',0,'a',L3,'alpha',0,'modified');
RL4=Link('revolute','d',L5,'a',L4,'alpha',-pi/2,'modified');
RL5=Link('revolute','d',0,'a',0,'alpha',pi/2,'modified');
RL6=Link('revolute','d',L6,'a',0,'alpha',-pi/2,'modified');
Robot_6=SerialLink([RL1,RL2,RL3,RL4,RL5,RL6],'name','Robot');
Robot_6.teach;

运行结果:
在这里插入图片描述

四、形式3

L1=160;L2=449.5;L3=580;L4=200;L5=640;L6=228;
w1=0;w2=0;w3=0;w4=0;w5=0;w6=0;
%Tz(L2)*Rz
T01=[1 0 0 0;0 1 0 0;0 0 1 L2;0 0 0 1]*...
    [cos(w1) -sin(w1) 0 0;sin(w1) cos(w1) 0 0;0 0 1 0;0 0 0 1];
%Rx(-pi/2)*Tx(L1)*Rz(-pi/2)*Rz
T12=[1 0 0 0;0 cos(-pi/2) -sin(-pi/2) 0;0 sin(-pi/2) cos(-pi/2) 0;0 0 0 1]*...
    [1 0 0 L1;0 1 0 0;0 0 1 0;0 0 0 1]*...
    [cos(-pi/2) -sin(-pi/2) 0 0;sin(-pi/2) cos(-pi/2) 0 0;0 0 1 0;0 0 0 1]*...
    [cos(w2) -sin(w2) 0 0;sin(w2) cos(w2) 0 0;0 0 1 0;0 0 0 1];
%Tx(L3)*Rz
T23=[1 0 0 L3;0 1 0 0;0 0 1 0;0 0 0 1]*...
    [cos(w3) -sin(w3) 0 0;sin(w3) cos(w3) 0 0;0 0 1 0;0 0 0 1];
%Rx(-pi/2)*Tx(L4)*Tz(L5)*Rz
T34=[1 0 0 0;0 cos(-pi/2) -sin(-pi/2) 0;0 sin(-pi/2) cos(-pi/2) 0;0 0 0 1]*...
    [1 0 0 L4;0 1 0 0;0 0 1 L5;0 0 0 1]*...
    [cos(w4) -sin(w4) 0 0;sin(w4) cos(w4) 0 0;0 0 1 0;0 0 0 1];
%Rx(pi/2)*Rz
T45=[1 0 0 0;0 cos(pi/2) -sin(pi/2) 0;0 sin(pi/2) cos(pi/2) 0;0 0 0 1]*...
    [cos(w5) -sin(w5) 0 0;sin(w5) cos(w5) 0 0;0 0 1 0;0 0 0 1];
%Rx(-pi/2)*Tz(L6)*Rz
T56=[1 0 0 0;0 cos(-pi/2) -sin(-pi/2) 0;0 sin(-pi/2) cos(-pi/2) 0;0 0 0 1]*...
    [1 0 0 0;0 1 0 0;0 0 1 L6;0 0 0 1]*...
    [cos(w6) -sin(w6) 0 0;sin(w6) cos(w6) 0 0;0 0 1 0;0 0 0 1];
T06=T01*T12*T23*T34*T45*T56

运行结果:

T06 =

   1.0e+03 *

    0.0000    0.0000    0.0010    1.0280
   -0.0000   -0.0010    0.0000    0.0000
    0.0010   -0.0000   -0.0000    1.2295
         0         0         0    0.0010

### 自由度机器人 MDH 参数详解 #### 定义与背景 自由度(6DOF)机器人通常采用改进的Denavit-Hartenberg (MDH) 参数来描述其连杆和关节之间的关系。这些参数对于建立机器人的运动学模型至关重要,能够帮助定义每一个关节相对于前一个关节的位置和方向[^2]。 #### MDH 参数的具体构成 MDH 参数由四个主要变量组成:`α`, `a`, `d`, 和 `θ`。具体来说: - **α(i)** 表示第 i 到第 i+1 绕 Xi−1 的转角; - **a(i)** 是沿着 Xi−1 测量的距离,即两线交点间的距离; - **d(i)** 沿着 Zi 方向测量的距离,也就是沿 Z 移动的距离; - **θ(i)** 绕 Zi 旋转的角度,用于表示相邻两个坐标系间相对转动的程度; 特别值得注意的是,在实际应用中,为了适应不同类型的机器人结构特点以及简化计算过程,有时会引入偏移量(offset),这个值影响协机器人的零位姿态。如果忽略此偏移项,则可能导致默认情况下机器人呈现水平而非垂直站立的状态。 #### 应用实例 考虑一个典型的工业场景中的6R型串联机械手为例,通过设定合适的MDH参数集,可以精确描绘出各个部件的空间位置变化规律,并据此完成诸如路径规划、避障控制等一系列高级功能开发任务。当面对复杂的多体动力学问题时,利用MATLAB/Simulink等工具包辅助建模不失为一种高效的方法[^3]。 ```matlab % MATLAB代码片段展示如何创建简单的DH矩阵 function T = dh_matrix(theta, d, a, alpha) % 创建单个连杆变换矩阵 cth = cosd(theta); sth = sind(theta); calpha = cosd(alpha); salpha = sind(alpha); T = [ cth -calpha*sth salpha*sth a*cth; sth calpha*cth -salpha*cth a*sth; 0 salpha calpha d; 0 0 0 1]; end ```
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Vittore Lee

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值