基于Matlab和Coppeliasim控制机械臂识别抓取码垛(源码+万字报告+讲解)
摘要IAbstractII第1章 绪论11.1研究背景11.2研究现状11.3主要研究内容3第2章 CoppeliaSim与 Matlab 联合仿真原理52.1 CoppeliaSim 仿真功能52.2 三维模型及 URDF 描述52.3联合仿真通信流程6第3章 目标识别与抓取83.1 数据集的采集与标注83.2单目视觉系统标定83.3抓取码垛方法103.4 CoppeliaSim(vrep)拖动
摘 要 I
Abstract II
第1章 绪论 1
1.1研究背景 1
1.2研究现状 1
1.3主要研究内容 3
第2章 CoppeliaSim与 Matlab 联合仿真原理 5
2.1 CoppeliaSim 仿真功能 5
2.2 三维模型及 URDF 描述 5
2.3联合仿真通信流程 6
第3章 目标识别与抓取 8
3.1 数据集的采集与标注 8
3.2单目视觉系统标定 8
3.3抓取码垛方法 10
3.4 CoppeliaSim(vrep)拖动机械臂末端实现运动学逆解 11
3.5 Agv的控制四舵轮运动算法解析 12
第4章 仿真分析 15
4.1 码垛机械臂实验平台搭建及系统控制规划 15
4.2 码垛机械臂工作对象测量实验 16
4.3 码机械臂路径规划 16
总结 20
参考文献 21
致 谢 23
附录 23
第1章 绪论
1.1研究背景
近几年,伴随着科技进步的加速,机械臂在多个行业中的使用越来越广泛,已经变成了人们日常生活中不可或缺的辅助工具。从最初的工业机器人到现在的无人驾驶汽车,以及未来的智能交通系统,无不体现出了机械臂技术的巨大作用。在某些相对简单的重复任务中,机械臂已经完全取代了人类,实现了真正的无人化操作。机械臂作为一种典型的机电一体化系统,具有体积小、质量轻、操作方便等特点,能够有效地降低劳动力成本,提高工作效率。但是,随着社会的发展和人们生活品质的提高,人们对机械臂的需求也在持续增加,这导致机械臂在数量、复杂性和灵活性等多个方面都展现出迅猛的增长态势。与此同时,人们开始意识到机械臂的功能越来越强大,但是其执行复杂动作的能力却有所下降。这种发展趋势对于机械臂的功能表现,特别是在各种不同的任务环境中进行技能培训的适应性和效率,都提出了更为迫切和严格的标准。传统基于单个关节或单台设备的被动训练方式已难以满足人们日益增加的需求,因此需要一种新的智能训练方法来解决上述问题。鉴于操作的对象和场景的限制都展现出了丰富的多样性和变动性,目前针对单一任务的技能学习策略已经不能满足众多灵活的工作场景的需求。因此,研究一种基于多体系统理论和计算机仿真技术的新型机器手控制策略与控制技术成为必然。CoppeliaSim可以轻松地完成多刚体系统的动力学和运动学仿真,而Matlab则拥有出色的计算能力,并能轻松地搭建控制系统。将两者结合起来,开发出一种基于混合建模与仿真技术的机械臂协同仿真平台。通过使用这两款软件,我们成功地构建了一个机械臂的联合仿真系统。这个系统不仅可以对机械臂的运动学和动力学特性进行仿真分析,还能为机械臂的控制系统提供支持。通过这种交互式的联合仿真,我们能够显著提升机械臂的整体性能,为实际物理样机的开发提供了坚实的技术支撑。
1.2研究现状
鉴于国外在机械臂领域的研究起步较早,无论是在理论还是实际应用上都相当成熟,其中最有代表性的机械臂企业包括德国的KUKA、瑞典的ABB、日本的安川以及FANUC等。国内对机械臂产业的发展还处于起步阶段。日本在上世纪70年代开始尝试机械臂码技术。当时,日本一家名叫“日本机器人研究所”的机构就已经研制出可以自动抓取货物的码垛机械手,但其工作原理是通过手指将物体从一个位置移动到另一位置。继日本之后,瑞典的ABB公司成功设计并完成了名为IRB6的工业机械臂,该机械臂具有搬运和码放的功能。日本是世界最早将码垛机器人引入到制造业领域的国家之一。接着,美国、意大利、德国等国家也纷纷开始研究和开发足码机械臂技术,并且都取得了显著的进展,这极大地推动了机械臂码垛技术的进一步发展。
日本的OKURA公司被视为码机械臂领域的领军企业,经过将近五十年的不懈努力和发展,至今,该公司已经成功地完成了多个码垛机械臂系列的研究和开发工作。码垛机械臂是一种用于自动堆料或搬运产品的自动化设备。FANUC公司在码垛机械臂的研究上取得了显著的成果。在20世纪末,他们设计了M410iHS型的码垛机械臂,这款机械臂的抓取重量可以达到100Kg,并且每小时可以处理1800袋物料,显示出了卓越的工作性能。目前该型号码垛机械臂已成功应用于多个领域,如食品加工,烟草物流等,取得良好成效。这家公司生产的FANUCRobotM-410iB/160智能码机械臂配备了视觉感测器,这使得它能够进行动态码放,工作效率高,并能精确地重复定位。此外,机械臂的手腕部分采用了特殊的中空设计,有效地解决了手腕布线的难题。
我国在码垛机械臂技术方面的研究启动相对较晚,由于技术研究和探索的不足,其发展步伐相对较慢,与发达国家在应用方面存在明显的差距。随着工业自动化程度越来越高,码垛作业已成为生产过程中重要工序之一,而码垛机械臂是实现码垛作业的基础。目前,国内生产的机械臂控制器、RV减速器和伺服电机等相关技术都无法满足现代码垛机械臂的操作需求,这也是为什么国内的码垛机械臂产业尚未达到规模化的原因。
在过去的几年中,得益于政府的大力支持和激励,我国的码垛机械臂技术研究逐渐成为公众关注的焦点。得益于大量的资金和精力投入,该领域已经取得了显著的研究成果,进一步推动了码机械臂技术的广泛应用。码垛机械臂作为一种先进的物流设备,其应用领域越来越广泛,如仓储、包装等行业,为这些行业提供着便利条件。众多的高等教育机构和企业也开始积极参与码机械臂的研究和应用,至今,在码垛机械臂的理论研究方面已经取得了显著的进展,为我国的码机械臂技术发展注入了新的活力。
哈尔滨工业大学机械臂研究所开发的码垛机械臂,采用了一种高效的堆码技术,能够在每一次抓取多个目标物体时充分发挥其功能,从而显著提高了码机械臂的工作效率,具有很高的实际应用价值。该技术在国内首次实现低位式码垛机械臂自动化作业,具有重要意义。上海交通大学的机械臂研究所与无锡立马化工机械公司联手,共同研发了名为MDO-1600的低位式码垛机。这款码机不仅结构简洁,操作也相当便捷,而且工作效率相当高。目前国内已有部分厂家开始生产该产品,但还没有一套通用的设计思想和实现方案。北京航空航天大学的机械臂研究所成功开发了一款混联码机械臂,专门用于装载化肥、饲料等袋装物品。这种机械臂的设计不仅简化了操作和控制流程,而且使用起来也相当简便。目前国内对于码垛机械臂控制系统的研究主要是针对单台或多台机械臂而开展的,缺乏一套统一的控制系统方案。杨灏泉和他的团队通过思维方式的转变,提出了一种基于计算机软件开发的方法,以提高机械臂控制系统与现有控制系统的兼容性。这种新方法不仅增强了系统的兼容性,还能通过软件进行系统调整,从而实现对不同物体进行码垛机械臂抓取的操作。李春林等人采用计算机控制技术实现了机械手运动轨迹跟踪算法的改进。苏海最新研发的工业码垛机械臂使用了平行四杆设计,其集成度相当高,并且这种设计在操作和控制上都表现出色,使得在实际应用中非常方便。张建伟等人针对码垛机械臂进行了深入研究,主要是将其用于码垛机器人上。李成伟和他的团队通过将机械臂的主体和末端执行机构进行独立研究,对四杆机构在编码机械臂中的应用进行了深入探讨,并设计出了一款具有高度通用性和多样化抓取类型的码垛机械臂,以满足各种生产线和物流行业的工作需求。
1.3主要研究内容
本研究的目标是在Matlab和CoppeliaSim这两大软件支持下,构建并部署一款基于视觉技术的机械臂堆码控制系统,进而增强堆码工作的效益和准确度。
在Matlab软件中,通过应用Robotics Toolbox,我们创建了机械臂运动学的数学模型,包含了连杆参数的明确定义以及正逆运动学方程的详细推导等多个方面。我们使用Matlab对机械臂进行了动力学的模拟仿真,从而研究其在各种姿态状态下的可达性和灵活性,这将为接下来的抓取策略提供有力支持。将在Matlab软件里创建的机械臂模型导入CoppeliaSim软件内,执行动力学模拟分析,以证实该模型的准确度。在CoppeliaSim软件中构建了码垛工作环境,内容涵盖码垛平台、待取物品以及机械臂在此环境下的工作条件等。采用了基于深度学习原理的目标检测技术,该技术在复杂的场景中能够精确地检测出需要抓取的物体。在Matlab软件内,我们成功地实施了物体的识别算法,并借助CoppeliaSim所提供的视觉感测器数据进行了该算法的培训与验证。基于对物体辨识的成果,为机械臂制定了抓取位置和姿势,确保稳定地抓取目标。通过使用Matlab的路径规划方法,我们制定了从机械臂的初始位置至其抓取点的动态路径,同时也对障碍物隔离和碰撞检测等技术问题进行了考量。
第2章 CoppeliaSim与 Matlab 联合仿真原理
2.1 CoppeliaSim 仿真功能
CoppeliaSim是一个搭载高品质仿真引擎的机械臂模拟软件,它由场景模块、数据管理模块和操作控制模块三大部分组成。场景模块主要由可视化的仿真界面、其相对应的组件、装置以及感应器组成,并且可以支持UDF、STL等不同格式的外部模型导入功能;计算部门主要负责执行正/逆运动原理、以及冲撞检测等功能;所用的控制模块主要由内部和外部控制方式组成,如嵌入式脚本和插件。该应用程序兼容Linux、Mae OS 和Windows操作系统。在Windows下,通过LuaSocket进行通信,并能够执行C/C++、Java、Matlab、Pyton等外部编程语言的操作.LuaSocket 是一个专为多网络协议访问设计的模块库,它支持四种不同的通讯模式:阻塞函数调用、非阻塞函数调用、数据流以及同步操作。为了尽可能地减缓在联合模拟过程中的网络延时和负荷问题,我们在CoppcliaSim脚本环境中负责通讯接口和控制程序的开发。使用LuaSocket 通信的远程API函数,我们能够实现与Malab之间的信息交互,而在联合模拟过程中,应用程序与CoppeliaSim可以进行一对一或多对一个的信息交互。
2.2 三维模型及 URDF 描述
在机器人的模拟研究中,三维建模为实现机器人运动学与动力学仿真提供了关键基础。描述机器人系统时,我们通常采用统一的机器人描述格式(URDF Unified Robot Description Format)来明确机器人的各种特性,如其构造、关节、连杆以及传感器等。利用URDF方法,可以轻易地呈现机器人的几何与物理特征,并被应用在多种机器人模拟软件中。进行基于Matlab和CoppeliaSim的机械臂控制技术研究时,首要步骤是在SolidWorks软件中绘制该机械臂的三维模型。SolidWorks为三维机械设计的一款高性能软件,具备了精准生成高度复杂三维结构模型的能力。在Solidworks软件内,您能精确配置机械臂的各个连杆坐标、旋转轴以及可移动的轴,从而确保模型的准确性与实用性。在绘制了三维模型之后,为了将该模型输入到CoppeliaSim软件进行模拟仿真,有必要将它转为URDF格式进行转换。这里采用了sw2umf功能,这是一个设计专门用于把SolidWorks软件模型转化成URDF数据格式的应用工具。利用sw2umf的插件,用户能自动提取SolidWorks模型里的连杆、关节及坐标系的相关信息,并据此将其资料转化为URDF格式的详细描述文件。
在转换操作完成之后,我们把生成的URDF文档导入到Coppelia Sim软件里。CoppeliaSim不仅能够支持使用URDF格式导入机器人的模型,还提供了一系列的工具和功能,以便更好地进行机器人模型的构建和仿真实验。利用URDF文件的导入能力,你可以在CoppeliaSim软件中创建与SolidWorks模型相匹配的机器人模型,这包括每一个连杆的几何外形以及关节的活动范围等信息。在CoppeliaSim软件里,我们也有机会进行对机器人模型的调整与完善,如增添传感器或是调整其关节的各种参数。另外,借助CoppeliaSim的仿真工具,我们能够对机械臂的动态特性、动力系统及其与其他物体之间的交互进行深入的模拟分析,为接下来的机械臂控制技术设计与执行打下坚实基础。
2.3联合仿真通信流程
联合仿真技术采纳了一种客户端与服务器之间的通信方式,其中CoppeliaSi被选为客户端,Malab被用作服务器。客户端借助LuaSocket通信工具连续不断地接收来自服务器控制程序的指令,以保证机械臂的精确移动控制。具体的指令处理流程请参考图 2.1 。整个通信及仿真的流程如下:
1)为了实现对客户端机械臂的精准控制,首先输入机器人机械臂的模型,然后构建相应的仿真测试环境。之后,编制控制脚本并分析来自服务器发出的IuaSocket控制命令,之后在这个服务器上编写并输出用于控制客户端机械臂活动的控制程序;
2)在Matlab启动同步模式并启动仿真之后,用户端会接收并发送服务器的操作指令给执行句柄。一旦控制程序开始计算,服务器会通过IuaSocket发送指令给用户。完成分析后,控制机械臂遵循该指令。在完成上次仿真步骤之后,服务器会自动激活下一个仿真任务,并重复之前的所有指令,直到所有的控制指令都被完整地发出;
3)当仿真完毕,服务器启动命令,导致与客户端的通信遭到干扰或停止。
图 2.1 指令处理流程
第3章 目标识别与抓取
3.1 数据集的采集与标注
要想使机械臂达到智能状态,其中一个关键的元素是它应当可以感知来自外界的环境及其工作目标的特定信息。智能码垛机械臂主要的获取路径是由机器臂的感知系统捕获外部环境以及工作对象的独特特性信息。摄像机捕获的外围环境图片是二维的,这样的图像很难精确表示物品在空间中的位置。因此,单目视觉系统需要采用特定的图像处理技术来提取和计算图像的特征信息,从而获取物体的空间和尺度信息,以便准确地指导码垛机械臂的检测与抓取工作。
本研究使用单目视觉技术来捕获周边环境和码垛物体的关键信息。使用两台摄像头同步捕获同一位置的不同角度的图片记录,然后通过计算图像的视差和相关匹配算法进行处理,以确定工作物体的实际空间数据。系统的操作流程可以参考图3.1进行查看:
图3.1 码垛机械臂工作流程
3.2单目视觉系统标定
标定的主要步骤是识别摄像机的内部属性和它们之间的相对位置关系,而标定结果的质量将直接决定视觉系统测量的准确性。对于码垛机械臂而言,由于其以工业机器人为主,因此其自身也需要进行精确的自动化标定。虽然传统的摄像机校准方法为其提供了高度精确的运动控制,但这种方法的鲁棒性并不尽如人意,标定精度也未能达到人们的期望,这都限制了码垛机械臂视觉系统在视觉误差控制方面的性能。在“基于Matlab和CoppeliaSim控制机械臂识别抓取码垛”这一研究中,单目视觉系统标定是确保机械臂能够准确感知和定位目标物体的关键环节。单目视觉系统标定主要涉及相机内外参数的确定。内参包括焦距、主点坐标等,决定了图像中像素与实际物理尺寸之间的转换关系;外参则反映了相机在三维空间中的位置和姿态。标定的核心在于建立图像坐标与世界坐标之间的映射关系。这通常通过拍摄带有已知标记点的标定板图像来实现。通过提取标定板上的特征点,并利用这些点在图像坐标系和真实世界坐标系中的对应关系,可以求解出相机的内外参数。在Matlab中,可以利用其强大的图像处理和计算机视觉工具箱,自动化地完成特征点提取、对应关系建立以及参数求解等步骤。而CoppeliaSim作为一款强大的机器人仿真软件,能够模拟机械臂的运动和视觉感知过程,为标定结果的验证提供了便利。通过精确的单目视觉系统标定,可以为后续的机械臂识别抓取码垛任务提供准确的视觉信息,从而确保机械臂能够准确地识别并抓取目标物体,实现自动化码垛作业。接下来,我们将详细阐述这种方法的标记步骤:
(1)准备标定设备和环境:
选择合适的标定板,通常使用带有已知尺寸标记点的平面标定板。设置好标定环境,确保标定板与相机之间的相对位置稳定,避免外部光源或反射对标定造成干扰。
(2)安装和固定标定板:
将标定板精确地固定在待标定的机械臂工作区域内。确保标定板的平面和姿态稳定,以便在后续的图像拍摄中能够准确提取特征点。
(3)采集标定图像:
使用单目相机从不同角度和距离拍摄标定板的图像。确保每幅图像都清晰、明亮,标定板上的标记点能够被准确识别。
(4)图像预处理和特征点提取:
对采集到的标定图像进行预处理,如降噪、对比度增强等。使用Matlab中的图像处理工具或相关算法,提取标定板上的特征点。这些特征点通常是标记点的中心或边缘。
(5)特征点匹配和对应关系建立:
将提取出的特征点与标定板上已知的标记点进行匹配。建立特征点在图像坐标系和真实世界坐标系之间的对应关系。
(6)相机参数求解:
利用Matlab中的相机标定工具箱或相关算法,根据特征点的对应关系求解相机的内外参数。内参包括焦距、主点坐标、畸变系数等;外参包括相机相对于标定板的旋转和平移矩阵。
(7)标定结果评估和优化:
使用重投影误差等方法对标定结果进行评估,如果误差较大,可以调整标定参数或增加标定图像的数量,以提高标定精度,集成到CoppeliaSim中:将标定得到的相机参数导入到CoppeliaSim仿真环境中。在CoppeliaSim中模拟机械臂根据单目视觉系统识别抓取码垛的过程,验证标定结果的准确性。
通过以上步骤,可以完成基于Matlab和CoppeliaSim的单目视觉系统标定工作,为后续的机械臂识别抓取码垛任务提供准确的视觉信息。需要注意的是,在实际操作过程中可能需要根据具体情况调整和优化标定步骤和参数设置。
3.3抓取码垛方法
为了让机器臂可以自动抓取指定物体,我们首先要挑选一个合适的物体识别方法。涉及到的算法可能是基于图像处理技术的、或是依赖深度学习的方法。在选取算法时,我们必须权衡算法的精确度、时效性,以及对于复杂场景的适应性。在实施物体识别技术时,我们可以采用CoppeliaSim提供的编程界面和视觉感知数据,编写特定代码来成功识别所需的物体。在成功识别出所目标的物体之后,有必要为机械臂确定一个适当的抓取位置。这个过程涉及对目标物体的形状、尺寸和定位的详细分析,以便确定最优的捕捉位置和姿势。经过计算及深入分析,我们能够准确地确认机械臂的末端执行器应当到达的具体位置和方向,这将帮助我们顺利地捕获所需目标物体。要达到流畅且高效率的捕捉操作,必须创造并改进机器手臂的抓取路径。这涉及确定机械臂关节的各种运动路径、速度和加速度等关键参数,以保证机械臂能够严格遵循预定轨迹行动。通过调整和优化机器人的抓取路径,不仅能缩短其运行时长和能源消耗,还能增加抓取操作的准确率和稳健性。
在成功构建仿真环境并设定了抓取路线之后,便能够开始针对机械臂的抓取模拟操作。执行仿真软件可以细致观察机械臂从确定目标物体到成功地抓取和移动该物体的全程操作。在模拟操作时,能够即时掌握机械臂身在活动中的状态、传感器的数据信息以及抓取的最终成果等。
对仿真的成果进行研究,有助于评定机械臂的获取成功概率与整体稳定。这涉及记录抓取成功的机会和失败的次数,以及在抓取过程中遇到的不寻常情况。对这些数据的详细分析可以帮助我们了解到机械臂在多种场景和任务中的性能,同时也能指出可能的不足和优化方向。
3.4 CoppeliaSim(vrep)拖动机械臂末端实现运动学逆解
在V-REP中提供一种带有姿态信息的“虚拟点”,叫Dummy,其本身可以被视为没有重量和体积的质点,跟数学上“点”的概念差不多,但是这个质点本身是携带姿态信息的,所以是一个特殊的点。
dummy主要的两种应用场景:
(1)作为“领航点”。Dummy常常与Path相结合来作为目标运动位置的“领航者”,例如作为机械臂末端执行机构的目标运动点,包含位置和姿态信息。Dummy与Path相结合以后,可以随着Path运动,而Path就是我们自己定义好的目标运动轨迹,属于轨迹规划的内容,有许多方法可以做。
(2)作为“传感点”。因为其本身可以携带姿态信息,因此我们可以将它与机器人的某些部件“绑定”,从而在部件运动的时候可以从它这里获取到部件在V-REP仿真环境中的运动信息:位置、速度、姿态等,起到类似位置和姿态传感器的作用。
Dummy与其他模型一样,可以设置大小和颜色,也通过拖拽和V-REP提供的界面改变它的位置和姿态等信息。
Dummy可通过add添加,并将tip和target建立关联
Ikgroup
Ikgroup是CoppeliaSim自带的逆运动学模块。设置方法:点击f(x),在弹出的窗口中选择Inverse Kinematics,在下面添加新的IK Group,可以自定义名字。然后点击新建的IK_Group设定Calc.method,这里可选的有两个,一个是Pseudo inverse,一个是DLS,这里任意选一个都可以。还可以设置迭代步数,阻尼比等。点击Edit IK Elements,添加IK Element with tip,一个IK Group可以添加多个IK Element,将下面的Base设定为所用的基准。下面的Constraints里面的X、Y、Z表示空间位置的三维坐标信息,Alpha-beta 和 Gamma表示三维姿态信息。
主要操作步骤
1)将UR10机器人从模型库中拖入场景中
2)添加添加tip dummy——UR10_ikTip,绑定到UR10_link7下,调整UR10_ikTip的空间坐标与UR10_link7相同
3)复制UR10_ikTip,设为target dummy——UR10_ikTarget,绑定到UR10下,关联UR10_ikTip和UR10_ikTarget
4) 将UR10机器人的各个关节模式都设为IK mode + Hybrid operation
5) 添加IK group和IK element:从tools栏选择calculation module properties,在Kinematics栏选择add new IK group,选择逆解的方式和迭代步数,编辑IK elements,添加UR10_ikTip,以UR10为基底,勾选所有约束
6)改变不同的逆解方式和步数进行仿真。
3.5 Agv的控制四舵轮运动算法解析
(1)目标
遥控器给三个参数,与车体方向同方向的:
与车体方向垂直的:
使车体自旋的:
通过这三个参数,完成车体的所有动作,即给任意三个参数组合,车体都应能完成目标,包括围着四个轮子中的一个自旋灯复杂动作。
二、两个舵轮
先使用两个舵轮来分析,再推广到四个轮子,循序渐进
两个前提
1、把所有运动都看成绕车体平面任意一点的圆周运动,直线运动和自旋只是他的特殊极限运动状态
2、车体包括轮子在内的所有组成部分围绕某一点做圆周运动时角速度w相同,线速度和圆心垂直。所以有公式
变量设定
前轮与车体当前姿态形成的夹角即为前轮方向轮偏转角设为:
后轮与车体当前姿态形成的夹角即为后轮方向轮偏转角设为:
目标圆心与车体两轮连线的中点形成的夹角即为车体速度与目标圆心夹角为:
车体几何中心与目标圆心连线所形成的半径为:
其他具体参数如图
更多推荐
所有评论(0)