MATLAB机器人工具箱学习笔记_D-H建模

MATLAB机器人工具箱10.4 机械臂仿真教学

Matlab机器人工具箱有两种建模方式:

MATLAB机器人工具箱学习笔记_D-H建模_第1张图片

1. 标准型D-H参数建模(以如下机械臂为例):

MATLAB机器人工具箱学习笔记_D-H建模_第2张图片

MATLAB代码如下:

%% 标准型下连杆1-5的D-H参数
L(1) = Link('revolute', 'd', 0.216, 'a', 0, 'alpha', pi/2);
L(2) = Link('revolute','d', 0, 'a', 0.5, 'alpha', 0, 'offset', pi/2);
L(3) = Link('revolute', 'd', 0, 'a', sqrt(0.145^2+0.42746^2), 'alpha', 0, 'offset', -atan(427.46/145));
L(4) = Link('revolute', 'd', 0, 'a', 0, 'alpha', pi/2, 'offset',atan(427.46/145));
L(5) = Link('revolute', 'd', 0.258, 'a', 0, 'alpha', 0);
Five_dof = SerialLink(L,'name', '5-dof');  %将上述连杆串联起来,并命名为5-dof
Five_dof.base = transl(0, 0, 0.28);  %基坐标分别沿x,y,z的值;
Five_dof.teach  %画出机器人模型的GUI,并可以示教。

注:对于旋转关节而言,\theta部分用offset。如果是平移关节,则不写d用offset替代。

仿真图如下:

MATLAB机器人工具箱学习笔记_D-H建模_第3张图片

可以通过通过左下角的q1至q5的按键,改变关节角,从而改变机器人的位置和姿态。

2. 改进型D-H参数建模(以如下机械臂为例):

MATLAB机器人工具箱学习笔记_D-H建模_第4张图片

MATLAB代码如下:

clear;
clc;
L(1) = Link('revolute', 'd', 0.496, 'a', 0, 'alpha', 0, 'modified');
L(2) = Link('revolute', 'd', 0, 'a', 0, 'alpha', pi/2, 'offset', pi/2, 'modified');
L(3) = Link('revolute', 'd', 0, 'a', 0.5, 'alpha', 0, 'offset', -atan(427.46/145), 'modified');
L(4) = Link('revolute', 'd', 0, 'a', sqrt(0.145^2+0.42746^2), 'alpha', 0, 'offset', atan(427.46/145), 'modified');
L(5) = Link('revolute', 'd', 0.258, 'a', 0, 'alpha', pi/2, 'modified');
Five_dof_mod = SerialLink(L, 'name', '5-dof');
Five_dof_mod.teach

 仿真图如下:

MATLAB机器人工具箱学习笔记_D-H建模_第5张图片

 注:我们可以看到机器人中缺少一块,这是因为机器人工具箱默认基座位于原点,而改进型坐标系位于对应连杆的前端,而上述改进型D-H参数中的坐标系1和坐标系2的原点位于同一个位置,此时连杆1成为了一个点。为了好看可以把第一个轴的偏置取消掉,同时把偏置加到基座上。

 代码如下:

clear;
clc;
L(1) = Link('revolute', 'd', 0, 'a', 0, 'alpha', 0, 'modified');
L(2) = Link('revolute', 'd', 0, 'a', 0, 'alpha', pi/2, 'offset', pi/2, 'modified');
L(3) = Link('revolute', 'd', 0, 'a', 0.5, 'alpha', 0, 'offset', -atan(427.46/145), 'modified');
L(4) = Link('revolute', 'd', 0, 'a', sqrt(0.145^2+0.42746^2), 'alpha', 0, 'offset', atan(427.46/145), 'modified');
L(5) = Link('revolute', 'd', 0.258, 'a', 0, 'alpha', pi/2, 'modified');
Five_dof_mod = SerialLink(L, 'name', '5-dof');
Five_dof_mod.base=transl(0, 0, 0.496);
Five_dof_mod.teach

仿真图如下:

MATLAB机器人工具箱学习笔记_D-H建模_第6张图片

 

你可能感兴趣的:(机器人,matlab,学习,开发语言)