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

embedded/2024/12/29 12:57:22/

文章目录

文章目录

前言

一、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.ppmy.cn/embedded/2572.html

相关文章

设计模式系列:责任链模式

简介 责任链模式是一种行为型设计模式,它允许你将请求沿着处理者链进行发送。每个处理者都可以对请求进行处理,或者将其传递给链上的下一个处理者。责任链模式主要应用于面向对象编程中,特别是当系统中的对象需要根据其属性来决定如何处理请…

Linux-管道

目录 无名管道关闭未使用的管道文件描述符 管道对应的内存大小与shell命令进行通信(popen)命名管道FIFO创建FIFO文件打开FIFO文件 无名管道 管道是最早出现的进程间通信的手段。 管道的作用是在有亲缘关系的进程之间传递消息。所谓有亲缘关系&#xff…

【opencv】示例-pca.cpp PCA图像重建演示

// 加载必要的头文件 #include <iostream> // 用于标准输入输出流 #include <fstream> // 用于文件的输入输出 #include <sstream> // 用于字符串的输入输出流操作#include <opencv2/core.hpp> // OpenCV核心功能的头文件 #include "o…

密码学基础--搞清RFC和PKCS(1)

目录 1. CryptoDriver里KeyElement格式 2. 挖掘RFC标准 3.小结 昨天从生成密钥对开始逐步了解了公钥、证书等各种编码方式&#xff0c;今天继续趁热打&#xff0c;做一个理论知识汇总。 Ps:我只是标准的翻译搬运工。 1. CryptoDriver里KeyElement格式 在 CryptoKeyElemen…

「探索C语言内存:动态内存管理解析」

&#x1f320;先赞后看&#xff0c;不足指正!&#x1f320; &#x1f388;这将对我有很大的帮助&#xff01;&#x1f388; &#x1f4dd;所属专栏&#xff1a;C语言知识 &#x1f4dd;阿哇旭的主页&#xff1a;Awas-Home page 目录 引言 1. 静态内存 2. 动态内存 2.1 动态内…

FactoryMethod工厂方法模式详解

目录 模式定义实现方式简单工厂工厂方法主要优点 应用场景源码中的应用 模式定义 定义一个用于创建对象的接口&#xff0c;让子类决定实例化哪一个类。 Factory Method 使得一个类的实例化延迟到子类。 实现方式 简单工厂 以下示例非设计模式&#xff0c;仅为编码的一种规…

【随笔】Git 基础篇 -- 拉取数据 git pull(二十八)

&#x1f48c; 所属专栏&#xff1a;【Git】 &#x1f600; 作  者&#xff1a;我是夜阑的狗&#x1f436; &#x1f680; 个人简介&#xff1a;一个正在努力学技术的CV工程师&#xff0c;专注基础和实战分享 &#xff0c;欢迎咨询&#xff01; &#x1f496; 欢迎大…

STM32H7的8个串口fifo收发(兼容232和485)

STM32H7的8个串口fifo收发&#xff08;兼容232和485&#xff09; 串口硬件串口时序串口高级特性同步和异步的区别单工、半双工、全双工的区别 STM32H78个串口fifo驱动定义数据结构uart_fifo.huart驱动包括中断配置等 应用示例RS485深入理解 仅供学习。 USART 的全称是 Universa…