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

2024-05-06 05:04

本文主要是介绍机械臂标准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.正运动学验证

这篇关于机械臂标准DH建模及正运动学分析(以IRB4600型工业机械臂为例)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/963489

相关文章

Redis主从/哨兵机制原理分析

《Redis主从/哨兵机制原理分析》本文介绍了Redis的主从复制和哨兵机制,主从复制实现了数据的热备份和负载均衡,而哨兵机制可以监控Redis集群,实现自动故障转移,哨兵机制通过监控、下线、选举和故... 目录一、主从复制1.1 什么是主从复制1.2 主从复制的作用1.3 主从复制原理1.3.1 全量复制

Redis主从复制的原理分析

《Redis主从复制的原理分析》Redis主从复制通过将数据镜像到多个从节点,实现高可用性和扩展性,主从复制包括初次全量同步和增量同步两个阶段,为优化复制性能,可以采用AOF持久化、调整复制超时时间、... 目录Redis主从复制的原理主从复制概述配置主从复制数据同步过程复制一致性与延迟故障转移机制监控与维

Python 标准库time时间的访问和转换问题小结

《Python标准库time时间的访问和转换问题小结》time模块为Python提供了处理时间和日期的多种功能,适用于多种与时间相关的场景,包括获取当前时间、格式化时间、暂停程序执行、计算程序运行时... 目录模块介绍使用场景主要类主要函数 - time()- sleep()- localtime()- g

使用Java解析JSON数据并提取特定字段的实现步骤(以提取mailNo为例)

《使用Java解析JSON数据并提取特定字段的实现步骤(以提取mailNo为例)》在现代软件开发中,处理JSON数据是一项非常常见的任务,无论是从API接口获取数据,还是将数据存储为JSON格式,解析... 目录1. 背景介绍1.1 jsON简介1.2 实际案例2. 准备工作2.1 环境搭建2.1.1 添加

Redis连接失败:客户端IP不在白名单中的问题分析与解决方案

《Redis连接失败:客户端IP不在白名单中的问题分析与解决方案》在现代分布式系统中,Redis作为一种高性能的内存数据库,被广泛应用于缓存、消息队列、会话存储等场景,然而,在实际使用过程中,我们可能... 目录一、问题背景二、错误分析1. 错误信息解读2. 根本原因三、解决方案1. 将客户端IP添加到Re

Redis主从复制实现原理分析

《Redis主从复制实现原理分析》Redis主从复制通过Sync和CommandPropagate阶段实现数据同步,2.8版本后引入Psync指令,根据复制偏移量进行全量或部分同步,优化了数据传输效率... 目录Redis主DodMIK从复制实现原理实现原理Psync: 2.8版本后总结Redis主从复制实

锐捷和腾达哪个好? 两个品牌路由器对比分析

《锐捷和腾达哪个好?两个品牌路由器对比分析》在选择路由器时,Tenda和锐捷都是备受关注的品牌,各自有独特的产品特点和市场定位,选择哪个品牌的路由器更合适,实际上取决于你的具体需求和使用场景,我们从... 在选购路由器时,锐捷和腾达都是市场上备受关注的品牌,但它们的定位和特点却有所不同。锐捷更偏向企业级和专

Spring中Bean有关NullPointerException异常的原因分析

《Spring中Bean有关NullPointerException异常的原因分析》在Spring中使用@Autowired注解注入的bean不能在静态上下文中访问,否则会导致NullPointerE... 目录Spring中Bean有关NullPointerException异常的原因问题描述解决方案总结

python中的与时间相关的模块应用场景分析

《python中的与时间相关的模块应用场景分析》本文介绍了Python中与时间相关的几个重要模块:`time`、`datetime`、`calendar`、`timeit`、`pytz`和`dateu... 目录1. time 模块2. datetime 模块3. calendar 模块4. timeit

python-nmap实现python利用nmap进行扫描分析

《python-nmap实现python利用nmap进行扫描分析》Nmap是一个非常用的网络/端口扫描工具,如果想将nmap集成进你的工具里,可以使用python-nmap这个python库,它提供了... 目录前言python-nmap的基本使用PortScanner扫描PortScannerAsync异