Loading

毕设(1)——机械臂DH建模

毕设中用到了很多代码,其中一部分我通过看书和看论文学习并实现的代码,会通过Gitee仓库分享出来,这些代码仅用于学习使用,祝各位毕业生顺利完成毕设!

毕设系列内容:毕业设计——四自由度机械臂轨迹规划


毕设(1)——机械臂DH建模

毕设中使用到的机械臂是越疆出品的DObot魔术师机械臂,它的机械结构类似于IRB 660的码垛机械臂,用两个步进电机控制大臂和小臂的关节转动,并通过平行连杆机构保证末端的水平状态。

Dobot魔术师机械臂:官方网站

Dobot 机械臂
IRB660 机械臂

改进DH参数表

在官方论坛中下载模型后,根据模型尺寸和角度范围根据改进版DH法获得DH参数

改进DH法的参数定义如下图(摘自B站上的 机器人运动学—林沛群 课程PPT)

image

根据定义得到DH参数表如下

i \(\alpha_{i-1}\) \(a_{i-1}\) \(d_i\) \(\theta_i\) \(\theta\)范围
1 0 0 \(\theta_1\) (-90°~90°)
2 -90° 0 0 \(\theta_2\) (-85°~0°)
3 135 0 \(\theta_3\) (-10°~95°)
4 147 0 \(\theta_4\) \(-(\theta_2+\theta_3)\)
5 -90° 61 131 \(\theta_5\) (-90°~90°)

Matlab代码验证

在Matlab中仿真机械臂可以用到机器人工具箱,它的官方网址为Robotics Toolbox,可以在上面下载到最新版,但是经常连接不上。
我自己使用的工具箱版本为10.3.1,有需要的可以在我分享的链接中下载

RTB10.3.1下载地址:传送门(蓝奏云)
下载后的安装教程网上一大堆,找一找就行了

构建运动学模型用到的函数有Link和SerialLink两个函数,你可以在matlab中Link函数与SeriaLink函数学习笔记中看到两个函数的介绍和调用函数格式

调用格式如下

%        关节角   关节偏距  连杆长度   连杆转角   旋转关节   偏差
%        theta    d        a         alpha     sigma      offset
L = Link([0       0        0         0         0          0], 'modified');

其中,sigma代表关节类型,0代表旋转关节,1代表移动关节

定义关节的关节角度范围用到的是qlim参数

L.qlim = [-90, 90] * pi / 180;

连接连杆得到运动学模型用的是SerialLink函数

robot = SerialLink(L, 'name', 'Dobot');

有了这三个就可以在Matlab上构建运动学模型啦

test1.m

% Modified DH 建模dobot
clear, clc, close all;

%建立机器人模型
%           关节角   关节偏距  连杆长度   连杆转角   旋转关节   偏差
%           theta    d        a         alpha     sigma      offset
L(1) = Link([0       0        0         0         0          0], 'modified');
L(2) = Link([0       0        0         -pi / 2   0          0], 'modified');
L(3) = Link([0       0        135       0         0          0], 'modified');
L(4) = Link([0       0        147       0         0          0], 'modified');
L(5) = Link([0       131      61        -pi / 2   0          0], 'modified');

%定义关节限制角度
L(1).qlim = [-90, 90] * pi / 180;
L(2).qlim = [-85, 0] * pi / 180;
L(3).qlim = [-10, 95] * pi / 180;
L(4).qlim = [-95, 95] * pi / 180;
L(5).qlim = [-90, 90] * pi / 180;

%连接连杆
robot = SerialLink(L, 'name', 'Dobot');
robot.plot([0,-pi/4,pi/2,-pi/4,0]);%输出机器人模型,后面的参数为输出时的theta姿态
%robot.display;%打印出DH表
%robot.teach;%展示机器人模型

运行效果如下图

image

本文到此结束,后续会继续更新的~😃

posted @ 2022-05-24 08:40  Dragonet-Z  阅读(2997)  评论(5编辑  收藏  举报