机械臂标准DH建模及正运动学分析(以IRB4600型工业机械臂为例)

1. 前言

对于工业机械臂而言,运动学是不考虑力学特性的情况下对机械臂的几何参数与其位置、速度、加速度等运动特性的关系研究。DH建模是运动学的基础,全称为Denavit-Hartenberg建模方法,是一种广泛应用于机器人运动学中的建模技术。该方法通过在每个连杆上建立坐标系,并利用齐次坐标变换来实现连杆之间的坐标转换。通过依次变换,可以推导出末端执行器相对于基坐标系的位姿,从而建立机器人的运动学方程。
一般DH建模分为标准DH法(SDH)和改进DH法(MDH),这两种方法对于串联开环的机械臂结构来说没有什么影响,只是建模方式略有不同,SDH将坐标系建立在机械臂连杆末端,而MDH则将坐标系建立在连杆首段。两者之间的异同点另开篇阐述,这里将以IRB4600型六自由度工业机械臂为例,选择标准DH建模方法,建立其正运动学模型。

2. 标准DH建模

2.1 连杆坐标系

标准DH模型坐标系建立规则可以概括如下几个步骤。
(1)所有关节,无一例外用z轴表示。如果是关节是旋转的,z轴位于按右手定则选装的方向,如果关节是滑动的,z轴为沿实现运动的方向。在每一种情况下,关节i处的z轴(以及该关节的本地参考坐标系)的下标为i-1。
(2) 通常关节不一定平行或相交。因此,通常z轴是斜线,但是总有一条距离最短的公垂线,它正交于任意两条斜线。通常在公垂线方向上定义x轴。所以如果 ai表示 zi−1 与 zi 之间的公垂线,则 xi的方向沿 ai
(3)如果两个关节的z轴平行,选取与前一关节的公垂线共线的一条公垂线;如果两个相邻关节的z轴是相交的,那么它们之间没有公垂线,可选取两条z轴的叉积方向作为x轴。
(4)根据右手坐标系原则确定y轴方向
结合IRB4600-20/2.50型6轴机器人的机械结构,建立关于IRB4600-20/2.50型机器人的连杆坐标系。如图1所示。
在这里插入图片描述

图1.IRB400-20/2.50机器人连杆坐标系

2.2 DH参数表

连杆坐标系确立后,就可以根据连杆坐标系的位置相对关系来确定用于指示坐标系{i-1} 和坐标系{i}间相对位置和方位的4个几何参数。四个参数的定义如下:
ai:在连杆坐标系中,沿着xi轴,从zi轴到zi+!轴平移的距离;
αi:在连杆坐标系中,绕着xi轴,从zi轴到zi+!轴转过的角度;
di:在连杆坐标系中,沿着zi轴,从xi轴到xi+1轴平移的距离;
θi:在连杆坐标系中,绕着zi轴,从xi轴到xi+1轴转过的角度。
根据前面建立的连杆坐标系和建模规则,可分析IRB4600-20/2.50型六自由度工业机器人的运动学几何参数,结合工业机器人各个部件的出厂参数得出具体数据,如表1所示。

表1 连杆参数表
连杆ai(mm)di(mm)αi(°)θi(°)关节运动范围
1170495-900-180-180
2109500-90-90-180
31750-900-180-75
401230.5900-400-400
50090-180-125-125
608500-400-400

3. 正运动学分析

根据空间坐标转换的原理,坐标里两个坐标系的变换可以用齐次变换矩阵的乘积形式来描述:
在这里插入图片描述

基于IRB4600型机器人连杆坐标系和几何参数,可得连杆坐标变换的通用公式:
在这里插入图片描述

其中,矩阵的前3*3部分表示的是两个相邻坐标系之间的旋转变换,最后一列表示的两个相邻坐标系之间的平移变换,对于n个自由度的机器人,可通过上述规则建立各个关节的变换矩阵,这样就可实现工业机器人从基坐标系到任意一个连杆坐标系变换。
根据给出的关节参数和各个关节角度,然后计算机器人末端连杆在基坐标系中所处的位置和姿态,这个过程就叫做运动学正解过程。依照标准D-H建模原则针对IRB4600型机器人建立连杆坐标系之间的坐标变换模型后,再将表1中的连杆参数代入机器人齐次变换矩阵的通式中,可得 6 个相邻坐标系之间的齐次变换矩阵:
在这里插入图片描述

机器人末端法兰盘中心相对于机器人基坐标系的位姿可以由式1.3中6个齐次变换矩阵依次相乘得到如下矩阵:
在这里插入图片描述

其中: 在这里插入图片描述
矩阵60T表示机器人末端连杆坐标系相对于机器人基坐标系的位置和姿态,其中子阵N表示末端连杆坐标系相对于机器人基坐标系的姿态信息,子阵P表示末端连杆坐标系相对于机器人基坐标系的位置信息,该矩阵即是机器人运动学的正解。

4. matlab运动学仿真

六自由度工业机器人运动学分析的正逆解算是在矩阵运算的基础上进行数据处理计算,利用matlab分别通过公式推导和robotic toolbox工具箱建立机器人模型,关键代码如下。
工具箱代码:

clc;
clear;
%          thetai       di      ai-1     alphai-1
L1 = Link([0            495     175      -pi/2  ],'standard');
L2 = Link([0            0       1095      0     ],'standard');L2.offset=-pi/2;
L3 = Link([0            0       175      -pi/2  ],'standard');
L4 = Link([0            1230.5  0        pi/2   ],'standard');
L5 = Link([0            0       0        pi/2   ],'standard');L5.offset=-pi;
L6 = Link([0            85      0        0      ],'standard');L1.qlim =[-180*pi/180, 180*pi/180];
L2.qlim =[-90*pi/180, 150*pi/180];
L3.qlim =[-180*pi/180, 75*pi/180];
L4.qlim =[-400*pi/180, 400*pi/180];
L5.qlim =[-125*pi/180, 125*pi/180];
L6.qlim =[-400*pi/180, 400*pi/180];IRB4600=SerialLink([L1 L2 L3 L4 L5 L6], 'name', 'IRB4600');
IRB4600.display();
IRB4600.teach;

代码中使用Link函数设置机器人连杆,qlim函数限制关节变量的最大极限值和最小极限值,形成每个关节的运动范围,SerialLink函数连接连杆构成机械臂,'standard’表示使用的是标准DH建模方法。在上述代码中,IRB4600是机械臂的命名;IRB4600.display()是将机器人的标准DH参数表打印到控制台上。IRB4600.teach则是在界面上展示IRB4600机器人模型,在Tech界面,机器人模型可以根据输入的关节角变化而实时变化。L2.offset=-pi/2和L5.offset=-pi表示关节2和关节5处,机器人的关节角分别有-90度和-180度的偏移。整体由机器人工具箱建立的模型如图所示:
在这里插入图片描述

图2. IRB4600机器人可视化界面

公式推导代码:

clc;
clear;
% 正解输 入关节角
q_input = [10,20,30,40,50,60];
%% 公式推导正解
% 连杆参数(没有的默认为零)
a1 = 175;
a2 = 1095;
a3 = 175;
d1 = 495;
d4 = 1230.5;
d6 = 85;
Q1 = q_input(1)*pi/180;
Q2 = (q_input(2)-90)*pi/180;
Q3 = q_input(3)*pi/180;
Q4 = q_input(4)*pi/180;
Q5 = (q_input(5)- 180)*pi/180;
Q6 = q_input(6)*pi/180;% DH模型
L1=[cos(Q1),0,-sin(Q1),a1*cos(Q1);sin(Q1),0,cos(Q1),a1*sin(Q1);0,-1,0,d1;0,0,0,1];
L2=[cos(Q2),-sin(Q2),0,a2*cos(Q2);sin(Q2),cos(Q2),0,a2*sin(Q2);0,0,1,0;0,0,0,1];
L3=[cos(Q3),0,-sin(Q3),a3*cos(Q3);sin(Q3),0,cos(Q3),a3*sin(Q3);0,-1,0,0;0,0,0,1];
L4=[cos(Q4),0,sin(Q4),0;sin(Q4),0,-cos(Q4),0;0,1,0,d4;0,0,0,1];
L5=[cos(Q5),0,sin(Q5),0;sin(Q5),0,-cos(Q5),0;0,1,0,0;0,0,0,1];
L6=[cos(Q6),-sin(Q6),0,0;sin(Q6),cos(Q6),0,0;0,0,1,d6;0,0,0,1];
% 求解末端位置与矩阵
T = L1*L2*L3*L4*L5*L6;
% 打印结果
disp("正解结果:")
disp(T);

正运动学验证过程中,选取六个关节转角(单位为°)分别为(10,20,30,40,50,60)进行计算,通过计算取得正运动学位姿结果,和运动学分析推导出来的公式计算一致,如图3所示。
在这里插入图片描述

(a) 公式解

在这里插入图片描述

(b)工具箱解
图3.正运动学验证

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

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

相关文章

05_G1垃圾收集器

G1垃圾收集器简介 垃圾优先 Garbage-First(G1)垃圾收集器面向多处理器机器,适用于大内存场景。它尝试在无需太多配置的情况下实现垃圾收集暂停时间目标,并同时实现高吞吐量。G1旨在通过适用于当前目标应用和环境的功能&#xff0…

5月4(信息差)

🎄 HDMI ARC国产双精度浮点dsp杜比数码7.1声道解码AC3/dts/AAC环绕声光纤、同轴、USB输入解码板KC33C 🌍 国铁集团回应高铁票价将上涨 https://finance.eastmoney.com/a/202405043066422773.html ✨ 源代码管理平台GitLab发布人工智能编程助手DuoCha…

【前端开发---Vue2】史上最详细的Vue2入门教程,从基础到进阶带你彻底掌握Vue(三)

本篇重点分享常见指令修饰符、v-bind指令用于 class 类名 和 style 行内样式 动态控制、v-model在其他表单元素的使用...... 并结合具体案例来让小伙伴们掌握的更透彻!喜欢就先关注一下吧~ 声明:图片资源来自于黑马程序员公开学习资料 本人在学习当中&am…

golang学习笔记(协程的基础知识)

golang的协程 协程是一种轻量级的线程,它可以实现并发执行的并行操作。协程是Go语言中的一个核心特性,它使得程序能够以并发的方式运行,并且非常高效。与传统的线程相比,协程的创建和销毁成本非常低,可以方便地启动大…

浏览器中不能使用ES6的扩展语法...报错

浏览器大多数已经支持ES6(ECMAScript 2015)的扩展语法(...),包括Chrome、Firefox、Safari和Edge等。然而,如果你在某些浏览器中遇到无法使用扩展语法的问题,可能是由以下原因导致的:…

神经网络之防止过拟合

今天我们来看一下神经网络中防止模型过拟合的方法 在机器学习和深度学习中,过拟合是指模型在训练数据上表现得非常好,但在新的、未见过的数据上表现不佳的现象。这是因为模型过于复杂,以至于它学习了训练数据中的噪声和细节,而不…

一款开源高性能AI应用框架

前言 LobeChat 是一个基于 Next.js 框架构建的 AI 会话应用,旨在提供一个 AI 生产力平台,使用户能够与 AI 进行自然语言交互。 LobeChat应用架构 LobeChat 的整体架构由前端、EdgeRuntime API、Agents 市场、插件市场和独立插件组成。这些组件相互协作&a…

P8799 [蓝桥杯 2022 国 B] 齿轮

P8799 [蓝桥杯 2022 国 B] 齿轮 分析 最右边的齿轮的转速是最左边齿轮的q倍 最右边的齿轮的半径是最左边齿轮的q倍 题意即为:查询数组中是否存在两个数,其中一个是另一个的q倍 题目范围:查询次数q:2*10^5,数组范围2*10^5&…

XXL-JOB定时任务

1. xxl-job初识 1.1 xxl-job介绍 xxl-job 是大众点评大佬徐雪里开源的一款分布式任务调度框架,具有简单易用、轻量级、可扩展的特点。相比于Spring Task, Quartz,xxl-job有记录执行日志和运行大盘,方便开发人员和运维人员更好的管理任务。 …

如何进行面向对象分析、面向对象设计和面向对象编程

目录 1.引言 2.案例介绍和难点剖析 3.如何进行面向对象分析 4.如何进行面向对象设计 5.如何进行面向对象编程 6.总结 1.引言 面向对象分析(OOA)、面向对象设计(00D)和面向对象编程(OOP)是面向对象开发的3个主要环节。 在以往的工作中,作者发现,很多…

【JavaEE 初阶(一)】初识线程

❣博主主页: 33的博客❣ ▶️文章专栏分类:JavaEE◀️ 🚚我的代码仓库: 33的代码仓库🚚 🫵🫵🫵关注我带你了解更多线程知识 目录 1.前言2.进程3.线程4.线程和进程的区别5.Thread创建线程5.1继承Thread创建线程5.2实现R…

专项技能训练五《云计算网络技术与应用》实训7-2:使用OpenDaylight界面下发流表

文章目录 使用OpenDaylight的web界面下发流表1. 根据前面实训教程,启动并登录到opendaylight的web控制页面,并使用mininet2. 单击左侧的“Nodes”查看节点信息。其中尤其需要关注Node Id,下发流表的时候会用到Node Id,如下图所示。…

无穷级数错题本

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 <

word中取消分页符或分段符前后的空格

在Word中&#xff0c;有时候&#xff0c;我们添加分页符后&#xff0c;从分页符后面的文字就全部掉到了下一页&#xff0c;那么如何避免呢&#xff1f; 选择word选项--高级&#xff0c;然后下滑到下面&#xff0c;将“取消分页符或分段符前后的空格”选中&#xff0c;如下图所…

解读简单的一段深度学习代码(已跑通)

最近一直想要学习深度学习的内容&#xff0c;想要复现大佬的代码&#xff0c;试了好多有的是不给数据&#xff0c;有的总是跑不通&#xff0c;这一个是已经跑通的一个代码&#xff0c;以上为证&#xff0c;学习最快的方式就是直接实战&#xff0c;大部分的内容都是比较偏向于理…

机器学习笔记导航(吴恩达版)

01.机器学习笔记01&#xff1a;机器学习前置概念导入、线性回归、梯度下降算法 02.机器学习笔记02&#xff1a;多元线性回归、多元梯度下降算法、特征缩放、均值归一化、正规方程 03.机器学习笔记03&#xff1a;octave安装、创建矩阵 04.机器学习笔记04&#xff1a;octave中移动…

LeetCode题练习与总结:分隔链表--86

一、题目描述 给你一个链表的头节点 head 和一个特定值 x &#xff0c;请你对链表进行分隔&#xff0c;使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。 你应当 保留 两个分区中每个节点的初始相对位置。 示例 1&#xff1a; 输入&#xff1a;head [1,4,3,2,5,2]…

MyScaleDB:SQL+向量驱动大模型和大数据新范式

大模型和 AI 数据库双剑合璧&#xff0c;成为大模型降本增效&#xff0c;大数据真正智能的制胜法宝。 大模型&#xff08;LLM&#xff09;的浪潮已经涌动一年多了&#xff0c;尤其是以 GPT-4、Gemini-1.5、Claude-3 等为代表的模型你方唱罢我登场&#xff0c;成为当之无愧的风口…

第五十三节 Java设计模式 - 工厂模式

Java设计模式 - 工厂模式 工厂模式是一种创建模式&#xff0c;因为此模式提供了更好的方法来创建对象。 在工厂模式中&#xff0c;我们创建对象而不将创建逻辑暴露给客户端。 例子 在以下部分中&#xff0c;我们将展示如何使用工厂模式创建对象。 由工厂模式创建的对象将是…

因果推断 | 潜在结果框架的基础知识

文章目录 1 引言2 框架描述2.1 问题定义2.2 数学表达式 3 实现方案3.1 随机实验数据3.2 一般数据 4 方案评估5 总结6 相关阅读 1 引言 在上一篇文章&#xff08;运筹从业者也需要的因果推断入门&#xff1a;基础概念解析和体系化方法理解&#xff09;中&#xff0c;已经对因果…