MATLAB机器人工具箱10.4 机械臂仿真教学
Matlab机器人工具箱有两种建模方式:
1. 标准型D-H参数建模(以如下机械臂为例):
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,并可以示教。
注:对于旋转关节而言,部分用offset。如果是平移关节,则不写d用offset替代。
仿真图如下:
可以通过通过左下角的q1至q5的按键,改变关节角,从而改变机器人的位置和姿态。
2. 改进型D-H参数建模(以如下机械臂为例):
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
仿真图如下:
注:我们可以看到机器人中缺少一块,这是因为机器人工具箱默认基座位于原点,而改进型坐标系位于对应连杆的前端,而上述改进型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
仿真图如下: