基于Matlab机器人工具箱对Dobot机械臂的研究

news2024/10/7 18:27:02

文章目录

文章目录

前言

一、Dobot Mangician 分析

二、Matlab 机器人工具箱

1. 建立模型

2.  DoBot 正向运动学

3. Dobot 逆运动学

4. Dobot workpace

5. Dobot轨迹规划

三、Dobot studio

1. DoBot teaching

2. DoBot Python 程序

总结


前言

在本实验中,以 Dobot Mangician 四自由度机械臂为例。实验研究了机器人的运动学和轨迹规划问题。为了实现对 Dobot 机械臂的运动学控制,采用了 Denavit-Hartenberg (D-H)建模方法来建立 Dobot 机械臂的运动学模型。其运动学正解和逆解是利用机械臂的奇偶变换矩阵获得的矩阵得到运动学正解和反解;并使用机器人工具箱对 Dobot 机械臂进行轨迹规划仿真。使用机器人工具箱对 Dobot 机械臂进行轨迹规划仿真。在本实验中,将使用 Matlab 和Dobot Mangician功能。

一、Dobot Mangician 分析

Dobot Magicician 由底座、大臂、小臂和末端执行器组成。如果 Dobot Magicician 没有安装末端工具,则包含三个关节: J1、J2 和 J3 都是旋转接头。如果 Dobot 魔术师安装了末端工具,如抓取器或吸盘工具,则包含四个关节: J1、J2、J3 和 J4 也都是旋转接头。第一自由度的角度范围为-90至90度,第二自由度的角度范围为0至85度,第三自由度的角度范围为-10至95度,第四自由度的角度范围为-90至90度。   如图 (1) 和 (2) 所示(图片来自 dobot 网站:https://dobot.cn/products/education /magician.html)

二、Matlab 机器人工具箱

1. 建立模型

DobotMagician 机械臂有四个旋转关节,其中末端执行器是受机械约束的被动关节。 机器人机械臂的坐标系是根据 D-H 参数和建立坐标系的规则建立的,因为机器人的第一自由度是距底座最低点 138 毫米,所以 d1 是 138。为了便于数据计算,对单位进行了统一定义,D-H 参数列于表中:

theta

d

a

alpha

L1 = Link([0

1.38

0

pi/2]);

L2 = Link([0

0

1.35

0]);

L3 = Link([0

0

1.47

pi/2]);

L4 = Link([0

0

0

0]);

使用 Matlab 环境下机器人工具箱中的 "Link "和 "robot "函数确定机器人在零位的姿态。然后根据 D-H 参数对机械臂进行建模,并使用 "qlim "函数设置每个关节的角度范围。然后使用 "SerialLink "函数依次连接三个关节。最后调用 "teach "函数控制 Dobot 模型,调整四个关节变量,实时控制机械臂的位置运动。Dobot 三维模型如图所示:

2.  DoBot 正向运动学

前向运动学求解基于 Dobot 机械臂各关节的已知值,然后使用同质变换矩阵方程求解末端在空间中的位置。采用两种方法求解前向运动学:通过同质变换矩阵和使用机器人工具箱函数。


第一种方法是通过同质变换矩阵求解。首先给定每个关节的角度,然后利用坐标系 {i} 的关节相对于坐标系 {i-1} 的同质变换矩阵的一般方程,可以得到 Dobot 机器人手臂关节的变换矩阵如下: 以 T1 为例:(详细代码参见附录)

最后将每个链路的同质变换矩阵相乘,得到末端位置矩阵。


第二种方法是使用机器人工具箱来求解,这需要在建立模型后使用 fkine 函数,从而求出末端位置矩阵。找到末端位置矩阵。代码为 "dobot.fkine([0 , pi/7.554 ,-pi/4, 0])"。

3. Dobot 逆运动学

逆运动学的求解采用了同样的两种方法。逆运动学求解涉及根据机械臂末端的位置和姿态找到机械臂的关节角度,已知机械臂末端的位置会发生变化,但姿态始终垂直向下。位置矩阵是利用正解函数导出的位置矩阵来选择的。

第一种方法是在给出末端位置后,使用 "atan2() "函数求出 x 轴正方向与 xy 平面上的点 (x,y) 之间的夹角 "θ"。然后使用函数 "sqrt() "计算 Dobot 两节之间的夹角正弦。然后计算末端执行器的位置值,最后使用 "athan2() "函数计算第二自由度角。

第二种方法是使用机器人工具箱的函数进行求解。代码为 "q0=dobot.ikine(T0,'mask',[1 1 1 0 0 1])*180/pi",代码末尾添加 180/pi 是为了使计算结果更加精确。


通过比较求解结果可以看出,正向运动学的结果与逆向运动学中定义的参数相同,而逆向运动学的结果与正向运动学中定义的角度相同。如图所示。

4. Dobot workpace

机械臂工作空间是机器人末端执行器可到达的所有位置空间点的集合。它可以用来衡量机器人的工作能力,也是存在正向运动学解决方案的区域。为确保 Dobot 机械臂工作时末端执行器始终处于工作空间内,应将 Dobot 的工作空间作为参考进行分析。根据蒙特卡洛法的 Dobot 工作空间求解思路,在关节角度变量范围内随机生成若干组每个关节角度。然后对每组角度分别进行正运动学求解,最终求解集即为工作空间。在本实验中,共生成了 3000 组随机数据,并将其输入正向运动学求解函数以找到工作空间。如图所示:

5. Dobot轨迹规划

轨迹规划可以避免实验过程中机械臂的损坏,为后续实验研究工作提供支持。 在定义了多臂机器人的模型和参数后,使用 "flat "函数定义了五个点,这五个点分别是(2,0,2.38);(2.5, 1, 1. 13);(2,- 1.5,2.38);(2,-1.5, 1. 13);(2.6,0, 1.38)。然后使用 "ctraj "函数相互连接。然后使用 "transl "函数查找变换矩阵中的位置值,并使用 "mstraj "函数合并所有轨迹。然后使用 "axis "函数定义三维空间的大小。最后,使用逆运动学函数将轨迹点转换为多臂机关节角度,以便多臂机根据关节角度移动。根据关节角度移动。如图所示:

在代码中,还包括求解速度、加速度和位置的函数,当轨迹规划完成后,将在另一张图中显示,结果显示多臂机器人可以在这五个点之间移动。

三、Dobot studio

1. DoBot teaching

Dobot 教学模式可实现点对点运动。Dobot Magicician 的教学模式包括 MOVJ、MOVL 和 JUMP。 不同的运动模式在教学后会有不同的运动轨迹。

MOVJ:关节运动,从 A 点到 B 点。每个关节从 A 点对应的关节角度运动到 B 点对应的关节角度,同时到达终点。

MOVL:直线运动,A 点到 B 点的直线运动。
JUMP :门轨迹,A 点到 B 点以 MOVJ 运动模式运动,在 MOVJ 运动模式下上升到一定高度,在 MOVJ 运动模式下平移到 B 点上方的高度,然后下降到 B 点的位置。
在 MOVJ 运动模式下下降到 B 点的位置。如图所示。

将 matlab 实验模拟中的五个点设置为演示器模式。如图所示

2. DoBot Python 程序

Dobot 机械臂还支持用 Python 进行二次编程,以实现各种功能。同样,利用 matlab 实验中的五个点进行轨迹规划,并在 studio 中使用 Python 编程。    为了严谨起见,我添加了初始化功能。将在初始化完成后执行。代码如图(9)所示

总结

实验首先使用 D-H 方法对四自由度 Dobot 进行建模,并使用两种方法求解正运动学方程和逆运动学方程,最后使用机器人工具箱工具箱分析工作空间并仿真 Dobot 的轨迹规划,得到了 Dobot 各关节的角度、速度和加速度数据曲线。 对仿真结果的分析证明了轨迹规划的合理性和可行性。
Matlab 和机器人工具箱可以对机器人进行运动学仿真,在计算机上验证机器人是否能准确地按照所需的轨迹运行。这样就可以找到运动空间,评估机械臂是否可以安全移动。

Matlab完整代码:

matlab完整代码链接

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1607225.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

自如电费均摊问题

3月份搬了次家,嫌麻烦租了自如,第一个月的电费账单出来了,由于我是中途搬进去的,于是乎就好奇他会如何计算均摊,这个月电费账单出来了,算了下发现了点东西。 先说结论:按照我的这个均摊的方式&a…

TCP报文与三次握手四次断开、TCP最大连接数与文件打开数限制、keepalive、tcpdump、wireshark抓包分析工具

TCP报文 tcp详解、tcp与udp对比等 TCP:传输控制协议 UDP:用户数据报协议 源端口和目的端口字段:各占 2 字节(16位)。端口是运输层与应用层的服务接口。运输层的复用和分用功能都要通过端口才能实现。 序列号:在建立…

万兆以太网10G Ethernet简介

2002年6月IEEE标准协会批准了万兆(10G)以太网的正式标准。此标准的全名是“10Gbit/s工作的媒体接入控制参数、物理层和管理参数”。 另一个组织是10G以太网联盟(10GEA)。10GEA由网络界的著名企业创建,现已有一百多家企业参加,中国…

Pytorch DistributedDataParallel(DDP)教程一:快速入门理论篇

Pytorch DistributedDataParallel(DDP)教程一:快速入门理论篇 目录 一、 写在前面二、什么是分布式并行训练1. 并行训练2. 数据并行 三、DDP的基本原理1. DDP的训练过程2. Ring-All-Reduce算法 四、如何搭建一个Pytorch DDP代码框架1. 与DDP有…

javaScript常用知识点

1. this指向问题 在绝大多数情况下,函数的调用方式决定了this的值。this不能在执行期间被赋值,并且在每次函数被调用时this的值也可能会不同。 this指向的对象称为函数的上下文对象context;this的指向取决于函数被调用方式this的指向不是函数…

【机器学习】小波变换在特征提取中的实践与应用

小波变换在特征提取中的实践与应用 一、小波变换的基本原理与数学表达二、基于小波变换的特征提取方法与实例三、小波变换在特征提取中的优势与展望 在信号处理与数据分析领域,小波变换作为一种强大的数学工具,其多尺度分析特性使得它在特征提取中扮演着…

云服务器部署Springboot项目

前端项目打包 修改ip地址 在控制台输入npm run build:prod 会产生dist文件 将dist文件中的内容移动至/usr/local/nginx/html目录下 后端项目打包 修改ip地址 执行clean操作 执行install操作 将生成的target文件中的jar包移动至/usr/local/src目录下 启动 注意⚠️&#xff…

【linux】Ubuntu 修改用户名

第一次打开Ubuntu时不小心把初始用户名“siriusiot”写成“siriousiot”(多了一个o) 。作为技术人,我们要保持严谨,我们要纠正过来(其实就是单词拼错了怕被笑话)。 打开终端,输入: …

Redis key(BigKey、MoreKey)的存储策略

1. MoreKey 案例 1.1 大批量往 redis 里面 插入2000w 测试数据key (1) Linux Bash 下面执行&#xff0c;插入 100w rootspray:~# for((i1;i<100*10000;i)); do echo "set k$i v$i" >> /tmp/redisTest.txt; done; 查看 rootspray:~# more /tmp/redisTest.…

ABAP报表开发总结---采购排产表

1.动态创建内表 1.1首先维护好一个子例程 FORM frm_add_fcat USING value1 value2 value3 value4.wa_fcat-fieldname value1.wa_fcat-inttype value2.wa_fcat-reptext value3.wa_fcat-intlen value4.APPEND wa_fcat TO it_fcat.CLEAR: wa_fcat. ENDFORM. "frm_add_f…

win/mac达芬奇19下载:DaVinci Resolve Studio 19

DaVinci Resolve Studio 19 是一款功能强大的视频编辑和调色软件&#xff0c;广泛应用于电影、电视和网络节目的后期制作。这款软件不仅提供了专业的剪辑、调色和音频处理工具&#xff0c;还引入了全新的DaVinci Neural Engine AI工具&#xff0c;对100多项功能进行了大规模升级…

Mamba 学习

Vision Mamba U-Mamba 以后的趋势&#xff1a; 1.Mamba模型机机制上和transform一样&#xff0c;但是参数量上做了改进&#xff0c;可以直接替代 2.vision上可以实时处理

游戏登录界面制作

登录界面制作 1.导入模块和初始化窗口 import subprocessimport tkinter as tkimport picklefrom tkinter import messageboxwindow tk.Tk()window.title(Welcome)window.geometry(450x300) 导入必要的模块&#xff0c;并初始化了主窗口window&#xff0c;设置了窗口的标题和…

一 Mybatis简介

一 Mybatis简介 1.1 简介 MyBatis最初是Apache的一个开源项目iBatis, 2010年6月这个项目由Apache Software Foundation迁移到了Google Code。随着开发团队转投Google Code旗下&#xff0c; iBatis3.x正式更名为MyBatis。代码于2013年11月迁移到Github。 **MyBatis 是一款优秀…

JavaSE备忘录(未完)

文章目录 基本数据类型println 小知识除法( / ) 和 Infinity(无穷) 小知识除法InfinityInfinity 在除法中正负判断 求余(%) 小知识 基本数据类型 除 int、char 的包装类分别为 Integer、Character 外&#xff0c;其余基本数据类型的第一个字母大写就是它的包装类。 println 小…

微信小程序使用 Vant Weapp 中 Collapse 折叠面板 的问题!

需求&#xff1a;结合Tab 标签页 和 Collapse 折叠面板 组合成显示课本和章节内容&#xff0c;并且用户体验要好点&#xff01; 如下图展示&#xff1a; 问题&#xff1a;如何使用Collapse 折叠面板 将内容循环展示出来&#xff1f; js中的数据是这样的 代码实现&#xff1…

第二证券今日投资参考:人形机器再迎催化 钙钛矿电池产业化提速

昨日&#xff0c;沪指盘中在金融等板块的带动下强势拉升&#xff0c;一举打破3100点&#xff1b;但午后涨幅逐渐收窄。截至收盘&#xff0c;沪指微涨0.09%报3074.22点&#xff0c;深证成指跌0.05%报9376.81点&#xff0c;创业板指跌0.55%报1787.49点&#xff0c;上证50指数涨0.…

“We Need Structured Output”: 以用户为中心的大模型输出

发表机构&#xff1a;Google Research 这篇论文的核心是设计了一种系统&#xff0c;可以让开发者和用户对大型语言模型的输出施加结构性约束。系统的主要部分包括&#xff1a; 1. 用户界面&#xff08;GUI&#xff09;&#xff1a;允许用户通过图形界面来定义他们希望LLM遵守…

Meta Llama3 炸裂登场:一夜刷屏AI界,基准测试中一骑绝尘,GPT-4 Turbo遭遇强劲对手

在 2024年4月19 日&#xff0c;AI界迎来了一项重大突破&#xff1a;Meta 公司宣布推出了迄今为止最强大的新一代开源大语言模型 Llama3。这一消息无疑为我国AI产业的发展带来了新的希望和机遇。 &#x1f3af; Llama3 系列语言模型&#xff08;LLM&#xff09;包括 Llama3 8B …

深度剖析Gateway在微服务治理中的关键角色

目录 一、多层网关 二、Gateway 路由规则 2.1 路由 2.2 谓词 2.3 过滤器 三、路由声明规则 3.1 谓词 寻址谓词 请求参数谓词 时间谓词 自定义谓词 一、多层网关 首先我们先了解下一个请求是如何到达服务端并得到相应的。过程如图所示&#xff1a; 首先网址解析的第一步是 DN…