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

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


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

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

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

Dobot 机械臂 IRB660 机械臂

改进DH参数表

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

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

根据定义得到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;%展示机器人模型

运行效果如下图

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

毕设(1)——机械臂DH建模的更多相关文章

  1. 基于 Mathematica 的机器人仿真环境(机械臂篇)[转]

    完美的教程,没有之一,收藏学习. 目的 本文手把手教你在 Mathematica 软件中搭建机器人的仿真环境,具体包括以下内容(所使用的版本是 Mathematica 11.1,更早的版本可能缺少某些 ...

  2. UR机械臂运动学正逆解方法

    最近几个月因为工作接触到了机械臂的项目,突然对机械臂运动方法产生了兴趣,也就是如何控制机械臂的位置和姿态.借用一张网上的图片,应该是ur5的尺寸.我用到的是ur3机械臂,除了尺寸不一样,各关节结构和初 ...

  3. MapleSim助力长臂挖掘机建模问题解决

    1.问题描述 一家机械零部件设计公司需要一个挖掘机模型,验证他们的零部件是否匹配完整的挖掘机系统.由于他们是一个零部件供应商,公司没有足够的资源和研发人员使用传统的工具创建一个完整系统的详细模型.然而 ...

  4. 机械臂运动学逆解(Analytical solution)

    计算机器人运动学逆解首先要考虑可解性(solvability),即考虑无解.多解等情况.在机器人工作空间外的目标点显然是无解的.对于多解的情况从下面的例子可以看出平面二杆机械臂(两个关节可以360°旋 ...

  5. 【BZOJ3506】排序机械臂(Splay)

    [BZOJ3506]排序机械臂(Splay) 题面 神TMBZOJ没有题面,感谢SYC的题面 洛谷的题面也不错 题解 对于每次旋转的物体 显然可以预处理出来 现在只要模拟旋转操作就行了 至于在哪里放标 ...

  6. ROS连接ABB机械臂调试详细教程-ROS(indigo)和ABB RobotStudio 6.03.02-

    在ROS industrial介绍中,给出了ROS和常用机械臂的连接方式.具体信息可以参考:http://wiki.ros.org/Industrial ROS连接ABB机械臂调试详细教程-ROS(i ...

  7. 机械臂——arduino、marlin固件、printrun软件【转】

    最近了解到,在市面上大多数机械臂控制都采用的arduino这个开源硬件来控制的,而我发现既然会单片机,就没有必要采用arduino来控制了,arduino只是一种为了简化编程而开发一种软硬件控制平台, ...

  8. 使用VTK与Python实现机械臂三维模型可视化

    三维可视化系统的建立依赖于三维图形平台, 如 OpenGL.VTK.OGRE.OSG等, 传统的方法多采用OpenGL进行底层编程,即对其特有的函数进行定量操作, 需要开发人员熟悉相关函数, 从而造成 ...

  9. P3165 [CQOI2014]排序机械臂

    题目描述 为了把工厂中高低不等的物品按从低到高排好序,工程师发明了一种排序机械臂.它遵循一个简单的排序规则,第一次操作找到高度最低的物品的位置 P1P_1P1​ ,并把左起第一个物品至 P1P_1P1 ...

随机推荐

  1. java中接口和抽象类有什么区别,举例!

    2)接口和抽象类有什么区别?答:马克-to-win:抽象类里可以有实现的方法,接口里不能有,所以相对来讲各方面实现都简单(尤其动态方法调度).另外:类可以实现多个接口.反过来说,也正是抽象类一个致命伤 ...

  2. Python爬虫报错:"HTTP Error 403: Forbidden"

    错误原因:主要是由于该网站禁止爬虫导致的,可以在请求加上头信息,伪装成浏览器访问User-Agent. 新增user-agent信息: headers = {'User-Agent':'Mozilla ...

  3. JBOSS 7.1.1上的DB2和Orcale数据库配置

      将IBM DB2和Oracle数据源配置到JBOSS 7.1.1      第1步:  打开Standalone.xml文件将以下代码添加到数据源的子系统中,并根据数据库URL和数据源的用户名和密 ...

  4. js知识梳理6:关于函数的要点梳理(2)(作用域链和闭包)

    写在前面 注:这个系列是本人对js知识的一些梳理,其中不少内容来自书籍:Javascript高级程序设计第三版和JavaScript权威指南第六版,感谢它们的作者和译者.有发现什么问题的,欢迎留言指出 ...

  5. crm多对多

    多对多要使用service.Associate传入两表的id和中间表的 service.Associate("invoice", entityReferenceInvoice.Id ...

  6. Go Slice Tricks Cheat Sheet、Go 切片使用小妙招

    AppendVector. Copy. Cut. Delete. Delete without preserving order. Cut (GC). Delete (GC). Delete with ...

  7. 『忘了再学』Shell基础 — 10、Bash中的特殊符号(二)

    提示:本篇文章接上一篇文章,主要说说()小括号和{}大括号的区别与使用. 8.()小括号 ():用于一串命令执行时,()中的命令会在子Shell中运行.(和下面大括号一起说明) 9.{}大括号 {}: ...

  8. 2021.12.07 P4291 [HAOI2008]排名系统(Treap)

    2021.12.07 P4291 [HAOI2008]排名系统(Treap) https://www.luogu.com.cn/problem/P4291 双倍经验: https://www.luog ...

  9. echarts基本使用与注意事项

    npm 安装echarts npm install echarts -D 使用流程 1. 引入echarts,并配置成全局方法 vue2 import * as echarts from 'echar ...

  10. FreeRTOS --(14)队列管理之概述

    转载自 https://blog.csdn.net/zhoutaopower/article/details/107221175 在任何的 OS 中,都需要支持任务与任务,中断与任务之间的数据传输机制 ...