Matlab机器人仿真(五):利用DH法建立六轴机器人(复现,整合,记录)

DH法包括两种:一种为标准DH法,另一种为改进型DH法,如图所示(图片转载来自https://blog.csdn.net/qq_26565435/article/details/91460988):
Matlab机器人仿真(五):利用DH法建立六轴机器人(复现,整合,记录)_第1张图片
Matlab机器人仿真(五):利用DH法建立六轴机器人(复现,整合,记录)_第2张图片

Matlab机器人仿真(五):利用DH法建立六轴机器人(复现,整合,记录)_第3张图片

例子:建立一个常见的简单3轴机器人:


在建立一个常见的六轴机器人:


例子如图所示:
case1:
Matlab机器人仿真(五):利用DH法建立六轴机器人(复现,整合,记录)_第4张图片
case 2:
Matlab机器人仿真(五):利用DH法建立六轴机器人(复现,整合,记录)_第5张图片
case 3:
Matlab机器人仿真(五):利用DH法建立六轴机器人(复现,整合,记录)_第6张图片

在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机器人仿真(五):利用DH法建立六轴机器人(复现,整合,记录)_第7张图片
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);

你可能感兴趣的:(matlab,矩阵,算法)