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

本文介绍了如何使用MATLAB机器人工具箱进行标准型和改进型D-H参数建模,以5个自由度的机械臂为例,展示了建模过程和仿真效果。通过改变关节角,可以观察到机械臂的位置和姿态变化。在改进型建模中,调整了坐标系位置以避免连杆缺失的现象。
摘要由CSDN通过智能技术生成

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,并可以示教。

注:对于旋转关节而言,\theta部分用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

仿真图如下:

 

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值