机械臂标准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.正运动学验证

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python爬虫:XPath解析爬取豆瓣电影Top250示例

一、示例的函数说明: 函数processing():用于处理字符串中的空白字符,并拼接字符串。 主函数程序入口:每页显示25部影片,实现循环,共10页。通过format方法替换切换的页码的url地址。然后调用实现爬虫程序的…

Unity Animation--动画剪辑

Unity Animation--动画剪辑 动画剪辑 动画剪辑是Unity动画系统的核心元素之一。Unity支持从外部来源导入动画,并提供创建动画剪辑的能力使用“动画”窗口在编辑器中从头开始。 外部来源的动画 从外部来源导入的动画剪辑可能包括: 人形动画 运动捕捉…

[力扣]——387.字符串中的第一个唯一字符

. - 力扣&#xff08;LeetCode&#xff09; class Solution {public int firstUniqChar(String s) {int[] count new int[256];// 统计每个字符出现的次数for(int i 0; i < s.length(); i){count[s.charAt(i)];}// 找第一个只出现一次的字符for(int i 0; i < s.lengt…

几个容器网络问题实战解析

容器云平台和容器网络紧密结合&#xff0c;共同构建了容器化应用程序的网络基础设施&#xff0c;实现了容器之间的通信、隔离和安全性。文中容器云平台采用的容器网络组件是calico&#xff0c;这个是业界普遍采用的一种方案&#xff0c;性能及安全性在同类产品中都是比较好的。…

linux下载安装JDK

查看系统是否自带 jdk java -version 一、jdk下载安装 jdk11下载 上传到 linux 以下说明已下载 解压 tar -xzvf jdk-11.0.23_linux-x64_bin.tar.gz 查看是否安装成功 二、linux配置JDK环境 sudo vim /etc/profile JAVA_HOME/may2024/jdk-11.0.23 JRE_HOME$JAVA_HOME/…

苍穹外卖项目

Day01 收获 补习git Git学习之路-CSDN博客 nginx 作用&#xff1a;反向代理和负载均衡 swagger Swagger 与 Yapi Swagger&#xff1a; 可以自动的帮助开发人员生成接口文档&#xff0c;并对接口进行测试。 项目接口文档网址&#xff1a; ​​​​​​​http://localhost:808…

LLVM Instruction Selection 笔记

Instruction Selection 所处阶段 注&#xff1a;上图来源于 Welcome to the back-end: The LLVM machine representation 可以看到 SelectionDAG 架在 LLVM IR 和 LLVM MIR 之间&#xff0c;在此之前 machine independent optimization 已经完成。之后基本上就进入了 machine …

车载诊断技术 --- Service 22读取DID怎么会导致ECU不在线

车载诊断技术 — Service 22读取DID怎么会导致ECU不在线 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非…

Spring Cloud学习笔记(Hystrix):基本知识和代码示例

这是本人学习的总结&#xff0c;主要学习资料如下 - 马士兵教育 1、Hystrix简介2、Hystrix架构2.1、Hytrix的入口2.2、toObservable()流程 3、Hsytrix的简单样例3.1、dependency3.2、代码样例 1、Hystrix简介 Hytrix是用于处理处理延迟和容错的开源库&#xff0c;包含服务隔离…

指令和界面【Linux】

指令和界面 前言一、指令 vs 界面交互的需求满足需求的第一阶段——指令满足需求的第二阶段-界面时间 二、指令和界面交互区别为什么要学命令行总结 前言 Linux操作系统提供了丰富的命令行界面和图形用户界面工具&#xff0c;用户可以根据自己的需求选择适合的界面进行操作。命…

【Linux系统】冯•诺依曼体系结构与操作系统

本篇博客整理了操作系统相关的基础知识&#xff0c;先从硬件之冯•诺依曼体系结构&#xff0c;再结合软件之操作系统&#xff0c;旨在帮助读者理解计算机的软硬件资源&#xff0c;和操作系统的管理软硬件资源的手段。 目录 一、冯•诺依曼体系结构 1.计算机硬件设备 2.体系…

基于Springboot的校园生活服务平台(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的校园生活服务平台&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构…

【Java】基本程序设计结构(一)

前言&#xff1a;现在&#xff0c;假定已经成功安装了JDK&#xff0c;并且能够运行上篇示例程序。本篇将开始介绍Java程序中的基本设计结构&#xff0c;其中包括&#xff1a;一个简单的Java应用&#xff0c;注释&#xff0c;数据类型&#xff0c;变量与常量&#xff0c;运算符&…

spring框架学习记录(3)

Spring事务 Spring事务简介 事务作用&#xff1a;在数据层保障一系列的数据库操作同成功同失败Spring事务作用&#xff1a;在数据层或业务层保障一系列的数据库操作同成功或同失败 Spring事务角色 事务管理员&#xff1a;发起事务方&#xff0c;在Spring中通常指代业务层开…

企业级数据治理学习总结

1. 水在前面 “数据治理”绝对是吹过的牛里面最高大上的题目了&#xff0c;本来想直接以《企业级数据治理》为题来水的&#xff0c;码字前又跑去图书馆借了几本书&#xff0c;翻了几页才发现自己连半桶水都提不起&#xff0c;撑死只能在小屁孩跟前吹吹牛。 好吧&#xff0c;实在…

Mysql如何通过ibd文件恢复数据

Mysql ibd文件恢复注意问题 创建数据库&#xff08;随意创建&#xff09;创建数据表&#xff08;备注&#xff1a;表结构要和要恢复的表结构一致&#xff0c;row_format要和ibd文件的row_format一致&#xff0c;否则&#xff0c;会提示两者不一致。 当前row_formatdynamic&…

刘强东创业成功的四大要素:团队、用户体验、成本与效率

摘要&#xff1a; 本文深入探讨了刘强东创业成功的四大关键要素&#xff1a;团队、用户体验、成本和效率。通过对这些要素的细致分析&#xff0c;我们旨在揭示刘强东如何运用这些策略将京东打造成一个全球知名的电商平台。 一、引言 刘强东作为京东集团的创始人和CEO&#xff…

【DPU系列之】DPU中的ECPF概念是什么?全称是什么?(E CPF对标H CPF;embedded CPU function ownership)

ECPF&#xff1a;embedded CPU function ownership。 嵌入式CPU运转ownership。也叫DPU模式&#xff0c;是DPU工作运转3种模式之一&#xff0c;也是默认的模式。这里的嵌入式CPU指的是DPU上ARM CPU&#xff0c;表示网卡所有资源和功能被embedded CPU全权管理&#xff0c;行使所…

虚拟机jvm下

jvm原理与实践 java程序的跨平台特性 jvm基本结构 JVM类加载流程和内存结构总览 类加载 加载阶段 类加载 验证阶段 类加载 准备阶段 类加载 解析阶段 类加载 初始化阶段 程序计数器 虚拟机栈&本地方法栈 栈帧操作 堆 方法区 永久代 元空间 垃圾回收 可触及性

SpringBoot+Vue实现美食交流网站的设计与实现

一、前言介绍 美食交流网站采用Java技术&#xff0c;Mysql数据库存储数据&#xff0c;基于Springboot框架开发。系统采用了模块化设计方法&#xff0c;根据用户的需求开发功能模块&#xff0c;方便了程序扩展维护&#xff0c;以便后期的更新。整个开发过程首先对系统进行需求分…