DH法包括两种:一种为标准DH法,另一种为改进型DH法,如图所示(图片转载来自https://blog.csdn.net/qq_26565435/article/details/91460988):
例子:建立一个常见的简单3轴机器人:
在建立一个常见的六轴机器人:
例子如图所示:
case1:
case 2:
case 3:
在matlab中建立机械臂模型
MATLAB代码:
%%利用标准D-H法建立多轴机器人
clear;
clc;
L1 = Link('d', 5, 'a', 5, 'alpha', -pi/2,'offset',0); %Link 类函数;offset建立初始的偏转角
L2 = Link('d', 0, 'a', 20, 'alpha', 0, 'offset',0);
L3 = Link('d', 0, 'a', 5, 'alpha', -pi/2,'offset',0);
L4 = Link('d', 20, 'a', 0, 'alpha', pi/2,'offset',0);
L5 = Link('d', 0, 'a', 0, 'alpha', -pi/2,'offset',0);
L6 = Link('d', 10, 'a', 0, 'alpha', 0, 'offset',0);
L1.qlim = [-pi/2,pi];%利用qlim设置每个关节的旋转角度范围
robot=SerialLink([L1,L2,L3,L4,L5,L6],'name','S725'); %SerialLink 类函数
%% 普通机器人的示教展示
robot.display();%展示出机器人的信息
teach(robot);%调出示教滑块
得出如下:
matlab机械臂中常用函数的应用:
代码里含详细解释:
%%利用标准D-H法建立多轴机器人
clear;
clc;
L1 = Link('d', 5, 'a', 5, 'alpha', -pi/2,'offset',0); %Link 类函数;offset建立初始的偏转角
L2 = Link('d', 0, 'a', 20, 'alpha', 0, 'offset',0);
L3 = Link('d', 0, 'a', 5, 'alpha', -pi/2,'offset',0);
L4 = Link('d', 20, 'a', 0, 'alpha', pi/2,'offset',0);
L5 = Link('d', 0, 'a', 0, 'alpha', -pi/2,'offset',0);
L6 = Link('d', 10, 'a', 0, 'alpha', 0, 'offset',0);
L1.qlim = [-pi/2,pi];%利用qlim设置每个关节的旋转角度范围
robot=SerialLink([L1,L2,L3,L4,L5,L6],'name','S725'); %SerialLink 类函数
%% 普通机器人的示教展示
robot.display();%展示出机器人的信息
teach(robot);%调出示教滑块
%% 展示当六个关节角为000000时对应的姿态
% theta=[0 0 0 0 0 0];
% robot.plot(theta);
% p_1=robot.fkine(theta);
%% 机器人的正解函数
% theta1=[pi/4,-pi/3,pi/6,pi/4,-pi/3,pi/6];
% robot.plot(theta1);
% p0=robot.fkine(theta);
% p1=robot.fkine(theta1);
%% 机器人的逆解
Pos_x=30;Pos_y=0;Pos_z=-25;
p = [1 0 0 Pos_x;
0 1 0 Pos_y;
0 0 1 Pos_z;
0 0 0 1];%已知空间中的位姿q
mask = [1 1 1 0 0 0];
q=ikine(robot,p,'mask',mask); %ikine逆解函数,根据末端位姿p,求解出关节角q
robot.plot(q);%输出机器人模型,后面的三个角为输出时的theta姿态
disp(q);