基于SolidWorks的虚拟装配路径规划研究
2022-03-07张鹏仲梁维张泽南
张鹏 仲梁维 张泽南
摘 要:在机械产品制造过程中,装配工作占有重要的地位,其成本可以占到制造成本的30%—50%。装配工作对产品的最终质量也有很大影响。虚拟装配可以提前模拟装配过程,对保障装配质量和最终产品质量有着重要的意义,机械手臂的应用也使得装配工作更可控。本文基于SolidWorks三维模型设计软件,利用SolidWorks提供的API接口,通过.NET编程语言控制机械手臂,对产品零件进行装配模拟、碰撞干涉检查和机械手臂运动空间路径规划,最终生成机械手臂装配最优路径,大大减少了人工对机械手臂运动的调试工作,提高了产品的最终质量,对加速制造业发展具有重要意义。
关键词:虚拟装配;六自由度机械手臂;包围盒;蚁群算法
中图分类号:TP319 文献标识码:A
Research of Virtual Assembly Path Planning based on SolidWorks
ZHANG Peng, ZHONG Liangwei, ZHANG Zenan
(School of Mechanical Engineering, University of Shanghai for Science and Technology, Shanghai 200093, China)
hefengzxp@163.com; zlvcad@126.com; 1727358290@qq.com
Abstract: In the manufacturing process of mechanical products, assembly work plays an important role, and its cost can account for 30% to 50% of the manufacturing cost. Assembly work also has a great impact on the final quality of products, as it can simulate assembly process in advance, which is of great significance to ensure assembly quality and final product quality. The application of manipulator also makes the assembly work more controllable. Based on SolidWorks 3D model design software and its API interface, this paper proposes to use .NET programming language to control the manipulator, and conduct assembly simulation of product parts, collision interference inspection and manipulator movement space path planning. Finally, the optimal path for the manipulator assembly is generated. It greatly reduces the manual adjustment of the movement of the manipulator, improves the final quality of the product, and is of great significance for accelerating the development of the manufacturing industry.
Keywords: virtual assembly; six-degree-of-freedom (six-DOF) manipulator; bounding box; ant colony algorithm
1 引言(Introduction)
在機械制造等领域,装配是产品生产过程中必不可少的一步,装配工艺的把控也直接影响着产品的质量以及产品的检修工作[1]。随着计算机辅助设计的发展,虚拟装配技术被广泛应用到生产领域。虚拟装配可以在实际生产之前模拟工人对零件的操作,在虚拟的环境中通过和计算机交互的方式对零件进行安装检测,可以极大地减少人力资源成本及实际装配过程中的错误率和故障率,有效提高实际装配效率[2]。随着我国制造业的崛起,将手工装配与机器人相结合的装配车间非常普遍并且已经成为制造业的发展趋势[3]。在航空航天制造领域,生产周期往往会因为复杂的装配工作而延期[4]。通过虚拟装配技术与机器人相结合的方法,可以在产品装配之前进行装配路线模拟、干涉检测等工作,寻找到最优的装配路径。目前,SolidWorks的运动仿真及虚拟装配功能已经非常完善,运用二次开发技术,可以实现特定功能的产品开发,使SolidWorks满足特定功能的需求。
2 系统设计(System design)
2.1 开发工具
虚拟路径规划主要有两个部分,第一是虚拟三维环境,第二是机器手模型和装配零部件模型。SolidWorks是一款优秀的三维建模软件,能够提供开发所需要的三维环境,且具有界面简洁、易于上手、使用方便的特点,同时提供大量的二次开发接口API函数,支持多种编程语言接口,其中包括C#、VB.net、C++等语言,扩展性较好[5],并且还支持外部EXE程序开发和插件式DLL开发。为了更好地实现与SolidWorks的交互,提高程序运行效率,本系统在采用DLL插件模式开发的基础上,通过WinForm应用程序窗口实现交互功能。
对于编程语言的选择,C#语言是一门面向对象的高级语言,其对于Windows编程天生具有其他语言无法替代的优越性,是完全契合.Net Framework框架的一门语言。本系统采用C#编程语言,可以大大提高开发效率和提升程序的性能。
2.2 系统输入与输出
在整个路径规划系统设计之前,需要对系统初始部分进行分析。系统提供的初始部分有:(1)产品模块零部件实体几何参考模型;(2)产品装配工艺文件;(3)六自由度机械手臂实物。
针对系统输入对象,需要进行一定的处理。第一步:将产品零部件模型按照1∶1比例在SolidWorks中测绘建模。第二步:按照产品安装工艺文件将零部件模型装配成产品各模块。第三步:将六自由度机械手臂按照1∶1比例建立模型并装配成装配体。
经过此系统的计算分析,最终需要得到的数据为产品模块在机械手臂抓举下进行装配时的路径信息,该路径信息包括路径的关键节点位置和路径中产品模块的几何姿态信息。其总体分析和对象处理流程如图1所示。
2.3 系统功能
路径规划的本质就是在三维空间中寻找一条将运动件从起点搬运到终点且中间无干涉碰撞的一条路径。系统功能设计包括图1的系统层和输出层两个层面的功能,这里将系统功能主要分为以下四个功能模块来实现。
第一,六自由度机械手臂控制功能模块。此功能模块是通过算法驱动六自由度机械手臂在SolidWorks环境下运动,达到模拟实际机械手臂在实际生产中运动的目的。机械手臂的运动是整个系统功能实现的前提,六自由度机械手臂控制功能的实现为后续路径规划等功能的实现提供了基础。
第二,零件运动控制功能模块。此功能模块主要功能是通过程序控制零件模块在SolidWorks三維空间环境中进行任意方向的移动和绕任意轴转动。
第三,路径规划算法实现功能模块。该模块主要利用基于蚁群算法思想的贪心算法加动态规划来进行功能实现,并基于随机游走的快速随机扩展算法加弗洛伊德算法寻求图节点中的最短路径。该模块也包含装配过程中的干涉碰撞检测算法。
第四,路径规划结果展示模块和数据导出模块。结果展示包括规划的三维空间路径曲线自动显示,数据导出主要将三维路径参数导出到数据库中。
整体功能框架如图2所示。
3 六自由度机械手臂控制算法(Control algorithm of six-DOF manipulator)
3.1 六自由度机械手臂建模
如图3所示的是NACHI六自由度机器手臂的实物以及按照1∶1建模的SolidWorks三维模型。按照实际尺寸将机器手臂各关节零部件建立模型,之后再进行装配。
3.2 六自由度机械手臂逆解
求解逆解就是在已知目标点的位置坐标和姿态时求解机械手臂六个关节的角度,以使得机械手臂末端能准确到达指定目标点。
为了更好地描述机械手臂,我们先对机械手臂的各关节规定运动正负方向,如图4所示。
将机械手臂基座坐标系定为世界坐标系,则执行件末端可以用表1的各项参数表示其相对于世界坐标系的位置。
通过观察六自由度机械手臂的模型结构,可在机械手臂各关节分别建立关节坐标系。其建立方法是以关节旋转中心为Z轴,作相邻的两个关节Z轴的公垂线,该公垂线的方向为坐标系的X轴,再以右手定则确定Y轴;当相邻两个Z轴相交时,沿着第一个Z轴与下一个Z轴相交的延长线为Y轴,再以右手定则确定X轴。坐标系如图5所示,图中坐标系分别表示各轴的正方向。
有了坐标系之后,就可以建立六自由度机械手臂D-H参数表,其变换规则如下:
(1)平移以世界坐标系为参考取正方向;旋转依据右手定则判断正方向:大拇指指向旋转轴正方向,四指旋转方向为旋转的正方向。
(2)绕轴,旋转,使得与平行(方向一致)。
(3)沿着轴,平移,使得与共线。
(4)沿着轴,平移,使得与原点重合。
(5)绕轴,旋转,使得与共线。
根据上述变换,可得到机械手臂D-H表,如表2所示。
正解的求法是已知各关节的旋转角度矩阵,即(1,2,3,4,5,6),求解末端位姿矩阵(X,Y,Z,A,B,C),通过各关节坐标系矩阵变换可以很容易地得到结果。反向求解和正解正好相反,它是将正解的结果作为已知条件,将正解的条件作为未知数进行计算求解。正解的解一定是唯一的,因为机械手臂的关节一旦都已知了,末端的姿态就固定不变了,但是逆解的计算就不一样了,最终解的结果也不一定唯一,甚至出现多解的情况,一般情况下可以得到八组解[6]。
3.3 六自由度机械手臂运动控制
机械手臂姿态是由六个旋转关节的角度所决定的,所以本质上控制机械手臂的运动实际上就是实现六个关节旋转角度的驱动。在三维模型中通过建模,添加角度配合,已经在模型中添加了六个角度的变量信息,如图6所示,其角度尺寸对应的参数如表3所示。
SolidWorks提供了角度变换的API,通过驱动角度变换可实现对各关节旋转角度的驱动。其具体API函数为:
//swDis表示IDisplayDimension对象
swDis=(IDisplayDimension)swMate.DisplayDimension;
swDim=swDis.GetDimension();//swDim表示IDimension对象
swDim.SystemValue=ang*Math.PI/180;//ang表示要驱动的角度值
swModel.ClearSelection2(true);
通过API驱动再结合逆解角度的思想,就可以控制机械手臂的运动了。为了达到连续运动的目的,程序中需要用到多线程来同时计算和驱动。
4 零件运动控制算法的实现(Parts motion control algorithm implementation)
在SolidWorks三维软件环境中,零件的位姿矩阵如公式(1)所示[7]。各项参数的大小决定了当前零件的显示状态和位置。同时,SolidWorks也给用户提供了丰富的API接口,用户可通过程序调用函数的方式修改位姿矩阵的各项参数来对零件进行操作。
对于移动,只需要改变零件位姿矩阵中的j、k、l三个参数,就可以实现沿着任意方向的移动。对于旋转操作则是更改a—i这前九个元素组成的3×3子矩陣。为了方便矩阵的计算,SolidWorks提供了详细的矩阵计算的API。结合API函数对位姿矩阵的各项参数进行赋值,就可以实现零件在装配体世界坐标下的移动旋转等操作。整体操作逻辑如图7所示。
按照上述对零件位姿矩阵的操作可以实现零件的位姿状态变换,但是无法看到实际用鼠标拖曳的中间过程动画。为了实现动画效果,需要对整个矩阵运算过程进行若干等分,将参数运算分成若干个步骤,每一步骤刷新一次显示,就可以实现动画过程。如果是移动变换,以每次移动1 mm的间隔进行移动,假设移动方向,以毫米为单位进行单位化,记长度,则可得到单位毫米移动矩阵,如公式(2)所示。
结合鼠标的拖动事件进行循环拖动,每次拖动后让程序休眠一定的时间,如20 ms,这样就可以看到整个变换过程是连续的。旋转变换实现连续动画的方法和移动变换的方法基本一致。
5 路径规划(Path planning)
5.1 碰撞干涉检测算法
路径规划算法中的碰撞干涉检测至关重要,它在一定程度上决定了整个路径规划的结果。
动态路径规划的具体方法是在零件运动控制算法中加入静态干涉算法,即零件在每个单位化的运动之后进行静态干涉检测,就可以实现动态检测。其动态干涉检测流程图如图8所示。
下面介绍静态干涉检测原理。目前,有很多学者在研究静态干涉检测方法,运用比较广泛的是空间包围盒(BoxTree)的思想,但是针对几何形状复杂的零部件,如具有较多孔洞特征的零部件,普通的包围盒方法会产生很大的误差。对此本文提出了一种基于有限分割思想的方法,先将零件按照一定单位空间的正方体大小分割成许多单元,然后再按照包围盒空间检测的方法在零件之间进行干涉检测。空间长方体包围盒存在干涉的条件是:两个长方体中心点之间的距离在X、Y、Z方向上的投影长度小于X、Y、Z相应方向上两个长方体对应边长之和的一半,就表示存在干涉。
为了简化单元划分,在三维场景中利用AABB包围盒的特点对几何零件进行三维单元划分,如图9所示为在SolidWorks中对零部件进行划分的结果。
其具体的划分方法为:以整个零部件外包围盒的三个表面(左、前、上)作为基准分别建立X、Y、Z朝向的三个参考平面,参考平面选择阵列属性,沿着包围盒方向阵列,设置切分单元大小,阵列只达到另一端为止。而后点击“插入”,在特征选项中选择切割特征,选择切割平面进行切割,当沿着三个方向切割后形成如图9所示的情况,整个零部件被切割成一个个较小的单元。在左侧特征树中可以看到“实体”这个文件夹,里面包含切割的实体,通过特征树遍历可以读取每个分割后的实体包围盒信息。至此可以完成对零部件有限分割后求取独立的包围盒信息,更加精确地反映零部件在空间的占用信息。实体切割流程图如图10所示。
在进行干涉检测前,先采用最大包围盒空间AABB方法进行检测[8],排除大量不可能干涉的零部件之间的检测。如果这一步检测结果没有发生干涉,那么就说明这两个几何体之间无干涉;如果第一步检测结果发生干涉,则进行有限分割的包围盒按照同样的方法进行检测。
5.2 路径规划算法
蚁群算法是仿生算法,由大自然的一些规律衍生而来。该算法是由意大利学者DORIGO等人在20 世纪90 年代初期通过模拟蚂蚁寻找路径的行为而提出的一种启发式随机搜索算法[9]。由于三维空间的复杂特性,常规的蚁群算法在三维路径规划中存在许多不合理的地方。本文提出了一种基于单个蚂蚁加上贪心算法[10]的简化动态蚁群算法来实现路径规划。为了更好地说明此算法,下面先定义一些关键变量,如表4所示。
具体步骤如下:
第一步:计算规划空间,得到整个规划空间的可行域的边界范围B。
第二步:由起点位姿矩阵s和终点位姿矩阵e计算移动距离D。
判断中的最大值,确定路径划分平面。如:j方向值最大,则采用平行于yoz平面的平面切分路径。
第三步:按照step将起点到终点进行直线位置划分,划分成step-1个点,即划分成step段。假设划分的节点依次记为,按照在第一步中得出的划分平面,以每个节点为中心点,按照网格单元大小dis进行网格划分,得到一系列网格划分节点。然后对这些网格点按照如下贪心算法的规则进行排序处理:
(1)计算每个网格点到上一步规划点的距离和到终点的距离,并求和;
(2)按照上述步骤中计算的距离进行从小到大排序。
第四步:结合干涉碰撞检测算法规划路径。
6 结果展示(Results presentation)
图11为整个系统最终结果图。图中有两个六自由度机械手臂、一块长方体放物台、两块板状零件和五颗螺钉。首先机械手臂分别将两块板状零件放置在空间指定位置,然后再将螺钉分别放置在指定位置并生成螺钉的运动路径。右侧为生成路径的关键点坐标结果。
7 结论(Conclusion)
本文针对产品生产过程中的装配环节,结合SolidWorks三维软件和二次开发技术,通过程序实现产品装配环节的模拟和路径寻优,提高了产品生产过程中装配环节的效率。本文提出的有限分割的方法能够有效地降低干涉检测的错误率,结合单个蚂蚁动态贪心算法,可规划出较合理的装配路径,为实际装配过程提供了很好的依据。
参考文献(References)
[1] 唐殿容.机械装配工艺的关键技术探究[J].科技创新与应用,2020(20):91-92.
[2] 陈瑶瑶,刘永霞,符纯明.虚拟装配技术的发展现状分析[J].机械工程与自动化,2020(06):220-222.
[3] 邹方.人机协作标准及应用动态研究[J].航空制造技术,2016 (Z2):58-63,76.
[4] 王洪雨,胡溶溶,喻懋林.装配仿真技术在卫星装配中的应用[J].航空制造技术,2015(21):56-58.
[5] 江洪,魏征,王涛威,等.SolidWorks二次开发实例解析[M].北京:机械工业出版社,2004:1-9.
[6] 肖振楠,申燚,倪辰旖.六自由度机械手的运动轨迹规划与仿真[J].机床与液压,2018,46(15):58-63.
[7] 張泽南,仲梁维.基于SolidWorks的自动焊缝标注的二次开发[J].软件工程,2020,23(05):17-20.
[8] 杨帆.基于B+树存储的AABB包围盒碰撞检测算法[J].计算机科学,2021,48(S1):331-333,348.
[9] DORIGO M, MANIEZZO V, COLORNI A. Ant system: Optimization by a colony of cooperating agents[J].IEEE Transaction on Systems, Man and Cybernetics-Part B, 1996, 26(1):29-41.
[10] 曾妮,陈俊豪,傅清爽.基于贪心算法的动态规划策略[J].电脑知识与技术,2021,17(20):141-143,152.
作者简介:
张 鹏(1996-),男,硕士生.研究领域:计算机辅助设计与智能制造.
仲梁维(1962-),男,硕士,教授.研究领域:计算机辅助设计与智能制造.
张泽南(1993-),男,硕士生.研究领域:计算机辅助设计与智能制造.