matlab机械臂工作空间代码_轻型协作机械臂运动学及工作空间分析
0 引言
OUR机械臂有别于传统工业机械臂,其特点是体积小、重量轻、有很快的运动速度和较大的活动范围,机械臂的最大运动速度可以达到180°/s,能够处理更复杂、更危险的工作,具有极强的灵活度、精确度和安全性。
对于机械臂运动学而言,正运动学相对简单,机械臂的工作空间求解方法主要有图解法、解析法、数值法,以及由数值法衍生出来的蒙特卡洛法[1]。图解法和解析法受到关节数目的限制,对于有些机械臂并不通用;数值法计算量太大,有些边界曲面可靠性得不到保证[2]。蒙特卡洛法可以用数学图形的形式直观清晰地表示机械臂的工作空间。本文采用J.Craij改进的D-H方法建立机械臂的连杆坐标系,分析OUR-2机械臂的正运动学模型,得到机械臂正运动学的解析解,并利用MATLAB robotics toolbox进行正运动学仿真分析,运用蒙特卡洛法得到机械臂的工作空间。
1 正运动学分析
1.1 机械臂模型
按照改进的D-H方法建立OUR-2六自由度机械臂的连杆坐标系。首先确定基坐标系的位置以及末端的初始位置和姿态,然后采用D-H法建立基坐标系和各关节处的坐标系,对于相同的基坐标系,不同的D-H矩阵的末端位姿相同。建立的OUR-2机械臂连杆坐标系如图1所示。
利用SolidWorks建立了OUR-2六自由度机械臂三维模型,如图2所示。机械臂共包括6个部分:基座、肩部、肘部、腕部1、腕部2以及腕部3。OUR-2有别于传统的六自由度机械臂,6个关节均为模块化旋转关节,每个模块均由高性能的伺服电机、谐波减速器、机械刹车、驱动器和通信总线组成,每个关节有一个自由度,机械臂的实验平台如图3所示。
1.2 机械臂正运动学分析
机械臂的工作空间是指机械臂末端所能到的范围,是机械臂灵活性的重要指标,理论上机械臂的工作空间是一个可以覆盖机械臂所在位置的球形区域[3],实际上由于奇点的存在,使得机械臂的灵活性和空间工作范围受到限制,如何扩大机械臂的工作空间以及增强它的灵活性是一个重要的研究方向。机械臂的运动学涉及末端位姿和关节变量,是空间分析的一个重要基础[4]。
根据OUR-2机械臂的连杆坐标系可以得到机械臂连杆参数,如表1所示。
表1 机械臂的连杆参数
关节编号关节变量θi(°)连杆长度ai-1mm扭角αi-1(°)连杆偏置dimm关节转角极限(°)1θ10180d1(-98.5)±1752θ2090d2(-121.5)±1753θ3a2(408)1800±1754θ4a3(376)1800±1755θ50-90d5(-102.5)±1756θ60900±175
相邻连杆坐标系D-H变换矩阵为:
(1)
由表1以及D-H变换矩阵可以得到OUR-2机械臂的末端姿态:
(2)
经过计算得到的基座和末端位姿的变换矩阵元素如下:
nx=-s6c1s432-c6(s1s5-c5c1c432),
ny=s6s1s432-c6(c1s5+c5s1s432),nz=-c5c6s432-s6c432,
ox=s6(s1s5-c5c1c432)-c6c1s432,
oy=s6(c1s5-c5s1c432)+c6s1s432,
oz=c5s6s432-c6c1c432,
ax=c5s1+s5c1c432,
ay=c5c1-s5c1c432,
az=-s5s432,
px=d2s1+a3c1c32-d5c1s432+a2c1c2,
py=d2c1-a3s1c32+d5s1s432-a2s1c2,
pz=a3s32-d5c432-a2s2-d1.
其中:sinθi=si;sin(θ3-θ2)=s32;cosθi=ci;cos(θ3-θ2)=c32;cos(θ4-θ3+θ2)=c432;sin(θ4-θ3+θ2)=s432。
1.3 OUR-2机械臂正运动学仿真
MATLAB robotics toolbox是一个功能强大的工具箱,可以对机械臂进行运动学、轨迹规划、动力学等方面的仿真[5]。
MATLAB robotics toolbox的drivebot(r)命令可以生成OUR-2机械臂的三维模型,同时生成机械臂控制面板,控制面板可以调节机械臂的角度,从而使关节产生转动。
设置仿真的初始关节变量和终止关节变量以及仿真时间,此时可以得到机械臂的末端位姿以及末端姿态矩阵。当初始角度θ初=(0,-π/3,π/6,π/2,0,0),终止角度θ终=(π/6,-π/6,π/3,-π/3,0,0)时,可以得到机械臂的初始和终止三维模型,如图4所示。
图4 机械臂的初始和终止三维模型
由于5、6关节角位移并没有变化,这里不再列出其角位移曲线,利用MATLAB编程可以得到前4个关节的角位移曲线,如图5所示,末端执行器的运动轨迹如图6所示。
图5 前4个关节的角位移曲线
图6 末端执行器的运动轨迹
图5表明了机械臂各关节运行正常,可以平稳地从初始位置到达终止位置。图6表明了OUR-2机械臂的参数设置合理,可以达到预期的目标。
2 机械臂工作空间分析
机械臂的工作空间是指机械臂正常运行时,末端执行器坐标系的原点能在空间活动的最大范围,或者说该原点可达点占有的体积空间,这一空间又称可达空间或总工作空间[6],记作W(p)。关节变量和工作空间的关系可表示为:
W(p)={P(θi,θi∈Q)}.
其中:θi为关节变量,θi=[θ1,θ2,θ3,θ4,θ5,θ6];Q为空间约束,Q={θ‖
和
分别为关节运动的下限和上限。因此,机械臂的工作区域可以表示为:
(3)
蒙特卡洛法是一种利用随机抽样解决数学问题的方法,其计算速度快,工作量小,能够精确地绘制出计算机图形,利用蒙特卡洛法求取工作空间的具体步骤如下[7]:
(1) 对OUR-2机械臂进行正向运动学分析,得到机械臂的末端姿态向量。
(2) 利用随机函数Rand(j)产生N个随机值(0~1之间),由此产生的随机步长为(θimax-θimin)·Rand(j)(θimax和θimin为关节变量的上限和下限),可以得到机械臂各个关节转角的伪随机值为θi=θimin+(θimax-θimin)Rand(j)。
(3) 将 6个关节转角代入正运动学方程,得到机械臂末端的坐标值,所求末端位置点数目越多,机器人的实际工作空间反映得越精确。
(4) 利用MATLAB强大的画图功能,将所得位置用点的形式表现出来,便可得到工作空间的“云图”。三维云图代码如下:
xx = ;
yy = ;
zz = ;
for N = 1:10000
N
a1=(175*(2*rand(1)-1))*pi/180;
a2=(175*(2*rand(1)-1))*pi/180;
a3=(175*(2*rand(1)-1))*pi/180;
a4=(175*(2*rand(1)-1))*pi/180;
xx=[xx,-121.5*sin(a1)+376*cos(a1)*cos(a3- a2)+102.5*cos(a1)*sin(a4-a3+a2)+408*cos(a1)*cos(a2)];
yy=[yy,-121.5*cos(a1)-376*sin(a1)*cos(a3-a2)-102.5*cos(a1)*sin(a4-a3+a2)-408*sin(a1)*cos(a2)];
zz=[zz,376*sin(a3-a2)+102.5*cos(a4-a3+a2)-408*sin(a2)+98.5];
end
figure(1);
plot3(xx,yy,zz,'g.');
其中:a1=θ1;a2=θ2;a3=θ3;a4=θ4;xx、yy、zz为机械臂的空间位置向量。
本文取N=100 000,即随机坐标数目为100 000个,应用蒙特卡洛法可得机械臂的工作空间云图,如图7所示。
图7 机械臂的工作空间云图
由图7可以看出,OUR-2机械臂几乎可以达到最大区域的所有空间,利用蒙特卡洛法仿真模拟可以得到一系列的随机点,但与真实的工作区域还有一定差距,这是由于该方法本身的限制,利用蒙特卡洛法只能不断地逼近真实工作区域,并且这种逼近程度随着关节组合数量越多越接近真实工作区域[8]。
3 结语
本文首先分析了OUR-2机械臂的正运动学方程,利用MATLAB robotics toolbox进行了运动学仿真,验证了结构的合理性。然后基于蒙特卡洛法进行了空间分析,可以看到空间内部点分布均匀,满足机械臂的使用要求。蒙特卡洛法克服了几何法受到自由度限制的缺陷,并且能够精确反映机械臂的工作空间。
matlab机械臂工作空间代码_轻型协作机械臂运动学及工作空间分析相关推荐
- matlab机械臂工作空间代码_[连载 5]Vrep--Matlab Robitic Toolbox--PUMA560机械臂控制
[连载 0]Vrep入门介绍 [连载 1]Vrep小车建模--前进和转向 [连载 2]Vrep小车建模--内嵌脚本 [连载 3]Vrep小车建模--matlab控制 [连载 4]Vrep导入三维模型- ...
- matlab机械臂工作空间代码_【ROS-Moveit!】机械臂控制探索(3)——基于python的API示例代码分析...
本文参考Moveit!官方文档. 系统:ubuntu 18.04 / 16.04 ROS:Melodic / Kinetic 概述 基于python的运动组API是最简单的MoveIt!用户接口.其中 ...
- matlab机械臂工作空间代码_老外研发模拟肌肉运动的机械臂,与人类协同工作动作完美同步...
一直以来 机器人貌似都是工程师的专属 一旦和体力劳动者扯上关系 就比较尴尬了 基本上就是机器人取代体力劳动者 其实 机器要是能和人类协同合作的话 机动和执行并存 效率肯定会更高 因此人机协作再怎么难 ...
- matlab机械臂工作空间代码_焊接机械臂工作站的搭建与组装
一.物料准备 1.1.工业机器人焊接工作站需要的设备:弧焊机器人本体 示教器和电柜,焊机,气瓶,变位机,清枪站,焊枪,送丝机,焊丝,导电嘴,喷嘴 ,ANYBUS模块,导电嘴坐,送丝管,防撞装置,焊接工 ...
- matlab设计凸轮轮廓代码_机械设计基础之什么是凸轮机构,分类和常用运动规律是怎么样的?...
本文约2900字,主要讲了凸轮机构的应用和分类以及从动件常用运动规律.带你了解机械设计的基础知识.本文全干货,新手必备,可收藏学习,感谢你的阅读,祝你学有所成,生活愉快! 想了解平面连杆机构相关内容( ...
- matlab人眼疲劳检测代码_铝箔表面缺陷检测设备
随着用户对铝材质量要求的日益严格,越来越多的生产厂家开始注重铝箔本身的表面质量问题,辊印,针孔,褶皱,凹坑,氧化,擦伤,麻点等瑕疵为表面的主要缺陷,很小的瑕疵都会影响产品的质量.目前传统的生产型企业都 ...
- matlab贝叶斯优化工具箱_经济学人的神器——BEAR(贝叶斯估计、分析和回归工具包)...
武林至尊,宝刀屠龙, 号令天下,莫敢不从, 倚天不出,谁与争锋. --金庸·<倚天屠龙记> Bayesian Estimation, Analysis and Regression(简写为 ...
- 机械键盘按键重复_如何修复机械键盘上的卡住或重复键
机械键盘按键重复 Mechanical keyboards are great! But they're also more complex than conventional keyboards. ...
- 尼尔机械纪元 机器人博士_《尼尔机械纪元》特殊任务及NPC位置一览
导 读 <尼尔机械纪元>中有一些特殊任务及特殊NPC,需要某些特定条件才能触发,下面为大家带来了<尼尔机械纪元>特殊任务及NPC位置一览,希望对你们有所帮助. 博士机械人 村子 ...
最新文章
- linux安装emc的多路径软件,linux (centos)安装EMCPower多路径软件
- 相对熵(relative entropy或 Kullback-Leibler divergence,KL距离)的java实现(三)
- Hadoop生态hive(六)Hive QL表
- Java的堆与栈,科普给大家
- LeetCode 1971. Find if Path Exists in Graph(图的遍历)
- 一个七年程序员的经验
- linux下通过phpize为php在不重新编译php情况下安装模块memcache
- Java修改带回显吗_修改的是根据自定义标签进行处理回显
- error: failed to attach to process ID 0问题解决
- Maven的下载与配置(包含阿里云镜像配置)
- Python 植物大战僵尸代码实现
- 如何使用idea自带的数据库可视化工具
- python博弈论代码_博弈论(示例代码)
- 《赢家的诅咒》书中的精髓:人性的复杂让主流经济学出现了诸多失灵,如何用更多理论完善经济学大厦是经济学家的重要使命
- 微信支付--预支付(统一下单)
- Navicat执行sql文件没反应
- java web开发(一) Java Web开发框架对比
- c语言课程设计作业五子棋,C语言课程设计-五子棋双人对战程序
- Java Springboot切面+注解实现数据脱敏
- 【JavsSE】数组的定义与使用
热门文章
- git提交时发现iml文件没有被排除
- Mobaxterm中使用git log报错/bin/busybox.exe less -R no such file or directory
- 关于SPARK_WORKER_MEMORY和SPARK_MEM
- android Handler UI线程后台线程通信
- ai字体素材网站_综合网站大全,字体、设计、图片各种素材管够,资源丰富你懂得...
- cocos2dx java 乱码_[cocos2d-x] --- 完美解决中文乱码
- 太极图正确画法_太极图的三种画法你知道吗?
- pytest命令行传参
- python3扫雷代码_python3 命令行 扫雷
- php 递归函数中静态变量,php递归,静态变量,匿名函数使用