何思民,董奕辰,陈辉庆,王汝贵
(广西大学 机械工程学院,广西 南宁 530004)
工业机器人影响到生活的方方面面,是当今社会不可缺少的一部分,为了设计出更好的工业机器人以及对设计出的机器人进行改进,虚拟仿真技术必不可少,在虚拟的环境中对机器人进行研究,可以节省大量的人力物力。传统的可视化虚拟仿真存在的一个比较大的缺点是缺乏对所有种类机器人的泛用性,MATLAB 机器人工具箱只适用于D-H 法建模的机器人,ROS 机器人系统提供了许多开源的数据库以及API 接口,但是其可视化虚拟仿真功能往往也是适用于D-H 法建模的机器人。造成可视化虚拟仿真软件泛用性差的原因在于,可视化仿真展现机器人的三维模型是要确定机器人每一个杆件的位姿,通过D-H法建模的机器人可以很方便地逐级将各关节的两端点位置以及该杆件相对于坐标系原点的矢量求解得到,从而唯一地确定其机器人杆件位姿,此时可视化仿真软件再通过计算机图形技术,将机器人的外形展现出来。而不方便使用D-H 法建模的机器人,其确定各杆件位姿的运动学方程则需要根据机器人的结构进行设计。
而Solid Works 软件拥有强大的配合功能,通过简单的几个配合约束,可以唯一地确定机器人各杆件的位姿,其对于所有类型的机器人,在运动学建模方面都有良好的适应性,但是Solid Works 的仿真功能较为薄弱,不少学者对其仿真功能进行开发[1,2]。基于Visual Studio 编译环境,使用C#语言,开发窗体应用程序,C#语言便于开发各项功能,在窗体应用程序中内置这些功能,比如说运动学建模和虚拟仿真等,然后对Solid Works 进行二次开发,通过其丰富的API接口,将程序中的各项功能可视化地展现出来,搭建出可视化虚拟仿真平台,方便以后进一步深入研究机器人。
实验室团队已经研制出一种新型可控变胞式码垛机器人,并制作出实物样机[3,4],以及分析其运动学[5]和控制程序[6]。该机器人的物理样机和机构如图1 所示,其中电机一驱动AB 杆运动,电机二驱动ED 杆运动,ED 杆又对杆件DC 的运动造成影响,主动杆AB杆与ED 杆共同影响CF 杆的运动,同时CF 杆通过铰链配合反过来对AB 杆和ED 杆造成约束。因此,该机器人使用D-H 法建模困难,难以使用各类可视化虚拟仿真软件进行虚拟仿真。在此基础上,对该机器人模型进行进一步的程序开发。
图1 机器人物理样机和机构
为了在计算机中建立该机器人的模型,在程序中声明一个机器人类,使用该机器人的实际物理尺寸对该类进行初始化设定。机器人各杆件的参数见表1。其中兹1 是主动杆件AB的转动角度,兹2 是主动杆件ED的转动角度,准1是底部电机的转动角度,准2是机器人末端执行器的回转角度。然后为该机器人类添加正运动学和逆运动学模块,当输入一组主动关节角角度或机器人末端位姿之后,可以唯一确定机器人的位姿。
表1 机械臂尺寸和主动关节角取值范围
为了将计算机程序中的机器人模型及功能可视化,须开发预览模块。该模块由机器人模块根据主动关节角或末端执行器位置能唯一地确定机器人各杆件的位姿,通过画图模块依次将机器人各杆件和端点描绘出来。以及通过坐标系转换模块,将三维的机器人的模型在二维平面内通过等轴测视图展现出来。如图2 所示是预览模块展现的机器人模型,预览模块对程序调试具有很大的意义,对正在开发的功能有参考意义。更真实的模型则要对Solid Works 进行二次开发后获得。
图2 预览界面
为了对机器人进行虚拟仿真和对模型模块以及预览模块进行检验,开发虚拟仿真模块,在窗体程序界面中输入各个关键点的坐标,机器人末端执行器依次通过各个关键点,且用动画的形式展现出来,并且在机器人运动的过程中要实时展现机器人的关键信息,包括各主动关节角的角度值和机器人末端执行器的位置。通过如下方法实现:根据机器人数学模型运动正解和逆解,对每一个时刻下的机器人的新位姿进行求解,实时更新机器人位置。使用工具箱中的Timer控件,每隔若干时间计算一次,比如设定100 ms 求解一次机器人位姿,并更新预览界面的图形,便可以实现虚拟仿真的动画展现效果。
为了实现上述各模块,需要对大量函数进行重复调用,为了减少代码冗余度,将这些函数进行封装处理,封装成一个个类,在有需要时再进行调用。按照模块化的思想,将各项功能总结成若干的按钮排布在人机交互界面上,每一个功能按钮背后都是大量函数的相互调用。如图3 所示,是开发的窗体应用程序的界面,日后根据实际需要,可以增减相对应的功能,以方便对机器人的研究。
图3 人机交互界面
按照机器人实际尺寸创建Solid Works 零件并装配成装配体,如图4 所示。
图4 Solid Works 机器人三维模型
基于Solid Works 强大的API 接口功能,可以很方便使用C#等语言对Solid Works 进行二次开发。这里给出关键的几个API 接口和伪代码。
public SldWorks swApp = new SldWorks();//创建变量swApp,设swApp 为新的Solid Works 实体对象。
ModelDoc2 swDoc = null;//初始化活动文档对象类API。
SketchSegment skSegment = null;//草 图 管 理 类API,创建一个变量对象以使用草图类下面的方法。
bool boolstatus = false;//用于选中某对象,比如:
boolstatus = swDoc.Extension.SelectByID2(“角度1”,“MATE”,0,0,0,false,0,null,0);//选中主动关节角-角 度1,boolstatus 是 选 中 状 态,SelectByID2 是Solid Works 的API 库中一种选择对象方法。
swDisplayDimension//尺寸对象,对其进行操作可以将主动关节角的值改变以驱动机器人运动。
基于上述的几个API,Solid Works 配合功能中的机器人各个主动关节角的角度可以随着窗体应用程序的控制而改变,主动关节角改变,则机器人的位姿发生改变,当窗体应用程序每间隔一段时间改变一次机器人的位姿,可以实现动画效果的可视化虚拟仿真,当建立好坐标系以后,基于SketchSegment API 可以将机器人末端执行器的路径展现出来。
为了验证所开发程序是否能够实现预期功能,进行可视化虚拟仿真实验。给定路径上的几个关键节点(表2)。在窗体应用程序中按下路径规划按钮,预览界面如图5 所示。机器人依次沿着这几个节点前进,并画出末端执行器所行进的路径,整个过程以动画的形式表现。然后按下打开Solid Works 按钮,等到打开三维界面,再按下三维仿真按钮,根据虚拟仿真求得的路径,通过API 接口控制机器人主动关节角的角度值,让机器人在三维中走出了对应的路径,并通过API 接口使用三维草图功能绘画出运动所走路径,如图6 所示。
图5 虚拟仿真窗体程序的界面和虚拟仿真预览
图6 窗体程序控制下的可视化虚拟仿真
表2 虚拟仿真过程中关键点末端位置和主动关节角度
针对可控变胞式码垛机器人,基于Visual Studio编译环境,使用C#语言开发窗体应用程序,建立机器人模型,开发虚拟仿真功能,开发预览功能,并对Solid Works 进行二次开发,将程序实现的功能在Solid Works 中展现出来,从而达到了可视化仿真的效果。并进行虚拟仿真实验,实验结果验证了搭建的可视化虚拟仿真平台能满足机器人的可视化虚拟仿真需求,为以后继续开发研究变胞式码垛机器人打下基础。