SCARA机器人matlab仿真

引言

机器人是当代科学技术的产物,是高新技术的代表。随着微计算机技术的发展,机器人科学与技术得到了迅猛的发展. 在机器人的教学中,由于机器人的价格昂贵,不可能用很多实物机器人进行实践学习,因此机器人仿真实验变得十分重要. 对机器人进行图形仿真,可以模拟机器人的动态特性,帮助研究人员了解机器人的工作空间的形态和极限,更加直观地显式机器人的运动情况,得到从数据曲线和数据本身难以分析的很多重要信息。

机器人主要有两大类:用于制造环境下的工业机器人和用于非制造环境下的服务机器人。工业机器人是一种对生产环境和生产条件具有较强的适应性和灵活性的柔性自动化装备,它主要用于现代制造业中代替人们从事繁重、重复单调、环境恶劣危险、人做不了或做不好的工作,从而减轻了人们的劳动强度, 改善了劳动环境 ,并有效地提高了生产的自动化程度 提高了产品质量和劳动生产率。机器人按照机械结构不同可以分为六类:

  • 直角坐标机器人 Cartesian robot/Gantryrobot
  • 圆柱坐标机器人 Cylindrical robot
  • 球坐标机器人 Spherical robot
  • 关节型机器人 Articulated robot
  • 平面关节型机器人 SCARA robot
  • 并联机器人 Parallel robot

关节型机器人与人的手臂相似,可以实现比较灵活的运动且所占空间体积小、相对工作空间大,因此非常适合喷漆、点焊、搬运、装配、码垛等自动化作业,在工业领域中有着广泛应用。1978年日本山梨大学的牧野洋 Makino 教授及其学生研制出一种 SCARA Selective Compliance Assembly Robot Arm 机器人。

与一般的关节型机器人不同的是,SCARA机器人只在平面上具有很好的灵活性而在与平面垂直的方向具有很高的刚性,因此非常适合垂直方向的装配作业。它在装配搬运等作业中可以实现很快的速度和较高的效率。SCARA机器人除具有普通的关节型机器人结构紧凑工作空间大操作灵活等优点外,同时还具有较高的重复定位精度和较好的性价比。

工具箱原理介绍

安装工具箱

安装Robotics Toolbox for MATLAB,其实就是将其安装文件放置在电脑的一个目录里面,然后在matlab里面将其添加到检索路径中,相当于添加了一个函数包。安装的方法如下:

  1. 下载该工具箱。
  2. 将压缩包解压到一个文件夹下面。
  3. 打开MATLAB,在File菜单下选择Set Path,打开如下对话框。
  4. 单击“Add With SubFolder”,选择上面的工具箱。
  5. 点击“Save”,然后点击“Close”。这样就把工具箱的路径添加到MATLAB的路径中了,也就是工具箱安装了。

工具箱函数介绍

要建立SCARA机器人对象,首先我们要了解SCARA的D-H参数,之后我们可以利用RoboticsToolbox工具箱中的link和robot函数来建立SCARA机器人对象。

其中link函数的调用格式:

L = LINK([alpha A theta D])
L = LINK([alpha A theta D sigma])
L = LINK([alpha A theta D sigma offset])
L = LINK([alpha A theta D], CONVENTION)
L = LINK([alpha A theta D sigma], CONVENTION)
L = LINK([alpha A theta D sigma offset], CONVENTION)

参数CONVENTION可以取‘standard’和‘modified’,其中‘standard’代表采用标准的D-H参数,‘modified’代表采用改进的D-H参数。参数‘alpha’代表扭转角 ,参数‘A’代表杆件长度,参数‘theta’代表关节角,参数‘D’代表横距,参数‘sigma’代表关节类型:0代表旋转关节,非0代表移动关节。另外LINK还有一些数据域:

LINK.alpha %返回扭转角
LINK.A %返回杆件长度
LINK.theta %返回关节角
LINK.D %返回横距
LINK.sigma %返回关节类型
LINK.RP %返回‘R’(旋转)或‘P’(移动)
LINK.mdh %若为标准D-H参数返回0,否则返回1
LINK.offset %返回关节变量偏移
LINK.qlim %返回关节变量的上下限 [min max]
LINK.islimit(q) %如果关节变量超限,返回 -1, 0, +1
LINK.I %返回一个3×3 对称惯性矩阵
LINK.m %返回关节质量
LINK.r %返回3×1的关节齿轮向量
LINK.G %返回齿轮的传动比
LINK.Jm %返回电机惯性
LINK.B %返回粘性摩擦
LINK.Tc %返回库仑摩擦
LINK.dh return legacy DH row
LINK.dyn return legacy DYN row

其中robot函数的调用格式如下:

ROBOT %创建一个空的机器人对象
ROBOT(robot) %创建robot的一个副本
ROBOT(robot, LINK) %用LINK来创建新机器人对象来代替robot
ROBOT(LINK,) %用LINK来创建一个机器人对象
ROBOT(DH,) %用D-H矩阵来创建一个机器人对象
ROBOT(DYN,) %用DYN矩阵来创建一个机器人对象

利用MATLAB中Robotics Toolbox工具箱中的transl、rotx、roty和rotz可以实现用齐次变换矩阵表示平移变换和旋转变换。

动力学分析

SCARA 机器人是一种平面关节型工业机器人,共有 3 个旋转关节(分 别是 1、2 和 4 关节),其轴线相互平行,实现平面内定位和定向;另1个关节是移动关节(3关节),实现末端执行器升降运动。

SCARA 正运动学

假设有一个构型已知的机器人, 即它的所有连杆长度和关节角度都是已知的, 那么计算机器人手的位姿就称为正运动学分析。 换言之,如果已知所有机器人关节变量,用正运动学方程就能计算任何一瞬间机器人的位姿。
为了简化表达 , 令 C 1 = cos ⁡ ( θ 1 ) , C 2 = cos ⁡ ( θ 2 ) , C 3 = cos ⁡ ( θ 3 ) , S 1 = sin ⁡ ( θ 1 ) , s 2 = sin ⁡ ( θ 2 ) , s 3 = sin ⁡ ( θ 3 ) , s 23 = sin ⁡ ( θ 2 + θ 3 ) , C 23 = cos ⁡ ( θ 2 + θ 3 ) , \mathrm{C}_{1}=\cos \left(\theta_{1}\right), \mathrm{C}_{2}=\cos \left(\theta_{2}\right), \mathrm{C}_{3}=\cos \left(\theta_{3}\right), \mathrm{S}_{1}= \sin \left(\theta_{1}\right), \mathrm{s}_{2}=\sin \left(\theta_{2}\right), \mathrm{s}_{3}=\sin \left(\theta_{3}\right), \mathrm{s}_{23}=\sin \left(\theta_{2}+\theta_{3}\right), \mathrm{C}_{23}=\cos \left(\theta_{2}+\theta_{3}\right), C1=cos(θ1),C2=cos(θ2),C3=cos(θ3),S1=sin(θ1),s2=sin(θ2),s3=sin(θ3),s23=sin(θ2+θ3),C23=cos(θ2+θ3),由D-H转换法则得,各坐标系转换矩阵分别为 :
在这里插入图片描述
在这里插入图片描述

矩阵相乘,得到如下式的机器人基座和末端执行器之间的总变换:
在这里插入图片描述

SCARA 逆运动学

这一部分公式太多了,latex格式没整理好,以后再添加。

matlab仿真

机器人的运动学模型

对于机器人的运动控制来说,最终的控制目标就是使其夹爪在空间中的位置和姿态(以下简称位姿)符合任务的要求,而机器人每一个关节的位置角度发生变化,都会影响到夹爪的位姿,并且这一系列关节的变化量对于位姿的影响是耦合的。为清晰地表达机器人的关节变化量与夹爪的位姿之间的运动关系,本文采用修改过的D-H法建立机器人的运动学模型。

SCARA机器人有4个关节角度,用向量 Θ = [ θ 1 … θ 4 ] \Theta =[\theta_1 \dots \theta_4] Θ=[θ1θ4]来表示,关节与关节之间连接着不可变形的连杆,每个连杆上都有对应的一个坐标系,如机器人的基座对应坐标系 X 0 , Y 0 , Z 0 {X_0,Y_0,Z_0} X0,Y0,Z0,大臂对应坐标系 X 2 , Y 2 , Z 2 {X_2,Y_2,Z_2} X2,Y2,Z2,小臂对应坐标系 X 3 , Y 3 , Z 3 {X_3,Y_3,Z_3} X3,Y3,Z3,求解运动学模型的最终目的,就是把X和Θ的关系找出来。

机器人的轨迹仿真

为了更好地验证机器人数学模型的正确性以及方便地进行带控制参数的运动仿真,本文基于Peter Corke的Robotics Toolbox for MATLAB,对SCARA的数学模型进行验证。系统参数设置主要代码如下:

%edited by callmiaoup,2021623日
clear;clc;
L1=Link([pi/2  0    40 0 0]); %[alpha A theta D sigma]
L2=Link([-pi/2 0    40 0 0]);
L3=Link([0     0    0  0 1]);
L4=Link([pi/2  0    0  0 0]);
r=SerialLink([L1 L2 L3 L4],'name','SCARA');
r.display() %显示参数
r.qlim=[-pi pi;-pi pi;-20 100;-pi pi]; %可视化界面范围
Qstart=[0 0 0 0]; %初始位置
QFinal=[45*pi/180 45*pi/180 50 -90*pi/180]; %终点位置
T=0:0.1:5; %时间设置(5秒,刷新频率10Hz)

利用Link指令,可以将SCARA机器人轴的参数一一指定。利用display指令,可以在command window处检查输入的D-H模型是否正确。

对于机器人的运动控制来说,常用的轨迹规划方式是点到点模式,选取了一个两关节各旋转45度、平动上升50,最后一个关节向相反方向旋转90度的动作,对机械臂的位姿进行轨迹规划。主要代码如下:

Q=jtraj(Qstart,QFinal,T); %计算运动学参数
figure;title('初始位置')
r.plot([0 0 0 0], 'workspace',[-120 120 -120 120 -120 120]); %显示可视化界面
figure;title('运动动画')
for i=0:50
r.plot([45*pi/180/50*i 45*pi/180/50*i 50/50*i -90*pi/180/50*i], 'workspace',[-120 120 -120 120 -120 120]);
end

如图为运动前机械臂的初始位置:
在这里插入图片描述

下图为运动时动画的某一帧截图:
在这里插入图片描述

利用jtraj指令,可以将两点间的轨迹用一条五阶多项式曲线逼近,以确保机器人在运动过程中的平滑性。为机器人前2轴的运动轨迹(角度):
在这里插入图片描述
机器人第3轴的运动轨迹(位移):
在这里插入图片描述
机器人第4轴的运动轨迹(角度):
在这里插入图片描述
利用plot指令,可以将规划的轨迹用动画仿真的形式展现,下图为运动到终点后的SCARA机器人的棍棒模型,因为1、2关节旋转45度,第四关节旋转-90度,所以末端关节在终点的朝向与初始位置朝向一致,此设置也是为了从一个方面检测仿真是否正常。
在这里插入图片描述

动力学分析

以关节2和关节3为例,对上述运动过程进行动力学分析,主要思路由流程图展现,如图:
在这里插入图片描述

转动关节

关节2为旋转关节,受力应以力矩表示。由此关节的旋转角度逐项作差除以采样点可得旋转的角速度,由角速度逐项作差可得角加速度。力矩即为转动惯量和角加速度的乘积。

根据细杆和圆柱体的力矩计算公式可得:对于细杆,当回转轴过杆的端点并垂直于杆时, J = m L 2 3 J=\frac{mL^2}{3} J=3mL2,其中m是杆的质量,L是杆的长度。对于圆柱体,当回转轴是圆柱体轴线时, J = m r 2 2 J=\frac{mr^2}{2} J=2mr2,其中m是圆柱体的质量,r是圆柱体的半径。

另因第3杆圆柱的轴线与关节2旋转轴不在同一条直线上,而是一个距离为第二杆长度的平行线,所以需要用到平行轴原理计算关节2运动时负载的总转动惯量。设刚体质量为m,绕通过质心转轴的转动惯量为 I c I_c Ic,将此轴朝任何方向平行移动一个距离d,则绕新轴的转动惯量I为: I = I c + m d 2 I=I_c+md^2 I=Ic+md2,这个定理称为平行轴定理。

综上,编写程序,计算关节2的力矩,其力矩-时间变化图如图:
在这里插入图片描述

平动关节

关节2为平动关节,受力应以力表示。由此关节的平动位移逐项作差,再除以采样点可得速度,由速度逐项作差可得加速度。此关节受力即为质量和加速度的乘积,由此思路编写程序计算关节3的力-时间变化关系,如图:
在这里插入图片描述

总结

本文对SCARA机器人进行了数学建模,并探讨了机器人的轨迹规划及运动仿真等问题。利用MATLAB的环境可以实现对模型的校验,运动仿真的结果可以检验机器人机构设计的合理性,动力学分析可以配合驱动和控制系统,为电机驱动和控制方法等提供参考$。

程序

https://download.csdn.net/download/callmeup/20530433

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MATLAB卡尔曼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值