本网站官方群 工业工程5000人群号 249148633
1 引言
本网站官方群 工业工程5000人群号 249148633
随着机器人技术的运用与发展,机器人编程技术成为一个很重要的问题。机器人离线编程(OIP,OffLineProgram)具有不需要停止机器人工作和可以通过图形仿真来避免实际机器人运动中的碰撞等优点。目前国内基本没有针对机器人仿真的成型工具,国外有一些商品软件如 RoboCAD,ROTSY,Evision等系统,但是RoboCAD价格比较昂贵,不能够普遍推广;ROTSY是基于Motoman机器人的一套仿真系统,但是他的普遍性不强而且价格也比较高。本文以江苏省“十五”攻关项目网络化焊接机器人研制课题为背景,设计了基于OpenGL的工业机器人三维仿真机离线软件RobotM,完成了对于Couma机器人的离线仿真程序开发。
智能拖地机器人,云鲸 NARWAL OpenGI是与图形硬件无关的程序设计接口,而且OpenGI的类库完成三维图形的底层操作,同时又具有建模方便、实时三维仿真、真实感强、平台独立性、真实性强、对于系统的要求并不是很高等优点。所以RobotM利用OpenGL和微软的VC+开发工具以及MFC类库作为底层的图形库接口实现仿真设计。离线仿真原理如图1所示。
智能拖地机器人,云鲸 NARWAL
本网站官方群 工业工程5000人群号 249148633
2 系统结构详述
本网站官方群 工业工程5000人群号 249148633
系统模块图如图2所示。
智能拖地机器人,云鲸 NARWAL
本网站官方群 工业工程5000人群号 249148633
图2说明了RobotM采用了分层次结构设计的方法,将整体程序设计成为3层结构,每一层的设计都相对独立,从而提高了程序的可移植性并且减轻了程序的维护难度。
智能拖地机器人,云鲸 NARWAL 2.1模型层设计
智能拖地机器人,云鲸 NARWAL 模型层利用OpenGI和MFC类库,构建了一系列底层的类对象,RobotM利用这些封装好的类对象来构建场景以及完成场景和用户的交互。在RobotM设计中增加了空间实体、空间模型、机器人模型的概念。
本网站官方群 工业工程5000人群号 249148633
空间实体就是单个的最简单的部件,而空间模型是若干个实体按照一定方式的组合。由于机器人仿真具有一定的特殊性,把机器人设定为一个实体或者一个模型显然是不合适的,所以可以把机器人以每一个转轴为界限分割成若干部分,而把分割好的各个部分都作为空间模型,从而形成了若干空间实体一空间模型,若干空间模型一机器人模型的组合方式。
本网站官方群 工业工程5000人群号 249148633
利用这种分层次的组合方式可以很容易控制仿真程序的显示和交互,例如利用RobotM仿真一个汽车焊接生产线时,用一个空间模型对象来描述汽车对象可以很容易地控制这个汽车对象。RobotM对于每种空间实体类型都利用OpenGI提供的GlgenList/glCallList函数实现了一套构建/绘制的函数,利用空间实体一空间模型一机器人模型的组织方式和C++面向对象技术中的多态性,最终把机器人模型和空间模型的绘制工作都归结为空间实体对象的绘制。
智能拖地机器人,云鲸 NARWAL RobotM把仿真内容保存为流文件。文件是按照分层结构且以相对路径存储并设计的,即工作区、机器人模型、空间模型、路径等文件如图2所示,用户通过打开工作区文件从而搜索并获取其他类型文件的信息以建立场景对象。机器人、模型、路径文件都可以为其他的工程所用,具有比较良好的重用性;相对路径使得用户即使改变了工程目录存放的位置也不会影响文件的获取,增加了RobotM的健壮性。
智能拖地机器人,云鲸 NARWAL 2.2场景层设计
智能拖地机器人,云鲸 NARWAL 场景层主要功能是完成场景中对象的建立、保存、绘制以及交互。作为模型层和示教层的中间层,场景层是机器人仿真系统中的连接部分。场景层从文件建立的过程如图3所示。
本网站官方群 工业工程5000人群号 249148633
本网站官方群 工业工程5000人群号 249148633
由图3可以看出场景的建立是一个从若干文件到仿真程序的空间实体对象的转换过程,RobotM把用户选取的工作区和其他一系列的文件转化为RobotM 可以识别的数据结构对象;同样的,把RobotM中的数据结构对象根据一定规则写入文件完成了保存过程。场景的绘制是仿真程序的重要部分。场景层利用模型层的实体绘制的接口,通过场景一(机器人)一空间模型一空间实体的方式调用各自的绘制函数,RobotM需要在屏幕上显示动画来表示仿真结果,所以程序的绘制效率十分重要。
智能拖地机器人,云鲸 NARWAL 除了运用普通的OpenGI绘制的各种增加效率的方式之外,本文为提高绘图效率,在RobotM中提出了“必要重构”的方法。即利用几个BOOI量做为场景的各个部分(包括机器人模型、空间模型等部分)的重构标志(重构是指利用OpenGL提供的glGeNIist函数将需要绘制的内容保存在内存区域中,每次绘制时直接从中提取,而不需要再次组织)。RobotM在绘制的每一帧都只重构改变过位置或者旋转角度的对象(机器人模型和空间模型对象包括在内),而对于没有改变的对象则直接调用glCallList将对象绘制出来。这样每一帧的绘制效率有很大提高,在程序仿真的时候不会出现显示打顿的现象。
本网站官方群 工业工程5000人群号 249148633
基于OpenGI的工业机器人三雏仿真设计与实现场景的交互提供给用户比较便捷的操作功能。用户根据自己的需要可以修改观察和控制整个场景的方式(如旋转、平移、改变光照等),还可以直接用鼠标在场景中选取目标点或者空间实体。
本网站官方群 工业工程5000人群号 249148633
2.3示教层设计
智能拖地机器人,云鲸 NARWAL 示教层主要是完成离线编程设计。上2层已经为示教层的设计打下了良好的基础。机器人离线编程的关键内容是能够根据用户的输入确定仿真程序中机器人的运动方式和机器人运动位置,这种关系与实际机器人和示教盒之间的关系相类似。RobotM通过保存各个位置点和各个点之间的运动方式来描述机器人运动的轨迹来实现仿真。
智能拖地机器人,云鲸 NARWAL RobotM有一个小型解释器,他能够实现机器人编程语言和RobotM能够识别的运动文件格式的相互转换。由于机器人编程实现的运动程序编译器有自己的语法和语义,所以RobotM必须能够实现控制柜运行的机器人控制文件和RobotM设计的程序相互转换。
智能拖地机器人,云鲸 NARWAL RobotM提供了2种确定机器人仿真运动末端点的方式:即转角运动和定点运动。转角运动如同实际机器人运动中的示教盒示教,能够通过用户输入在仿真程序中,使得指定的机器人各个关节部分运动,从而实现机器人的转角运动;而定点运动是RobotM中相对来说比较重要的同时也是转角运动无法做到的。利用场景层提供的接口,用glLoadName给场景中的每个需要确定位置的空间实体/空间模型/机器人模型创建惟一标示的ID,在用户鼠标选取空间中的点时利用ID来确定用户所选取的对象,在获取对象之后利用OpenGI的glUnProjeet函数获取鼠标点击位置在空间中的“世界”坐标系下的位置,完成鼠标平面坐标一空间坐标的转换,利用仿真机器人的运动方法使仿真机器人末端点运动到该空间坐标,从而确定机器人需要运动到的某个点的位置。
本网站官方群 工业工程5000人群号 249148633
通过若干步的上述2种过程的重复,完成这一系列点的设置,可以创建出路径文件。路径文件可以用来仿真也可以下传到机器人控制柜。
智能拖地机器人,云鲸 NARWAL 2.4辅助模块设计
智能拖地机器人,云鲸 NARWAL 机器人仿真程序还有其他一些独立模块并没有归结到上述3层结构中。但是这些模块和上述3层之间有着紧密联系。
本网站官方群 工业工程5000人群号 249148633
2.4.1算法模块
智能拖地机器人,云鲸 NARWAL 考虑到机器人仿真程序需要对路径进行仿真,所以必须提供相应的机器人的正逆解算法以及关节插补、直线插补、圆弧插补等算法。由于对于不同的机器人有不同的正逆解,所以在仿真系统中,实现一个通用的上述算法比较困难,所以尝试用文件来描述机器人的各项参数,取得了比较好的效果。
智能拖地机器人,云鲸 NARWAL 2.4.2其他模型模块
智能拖地机器人,云鲸 NARWAL 仿真程序提供了不同的构建模型的方式,分别为Mdl,3DS,Obj文件格式。也就是说提供了不同的文件接口,通过这些文件接口可以在场景中实现不同的构建模型方式。
智能拖地机器人,云鲸 NARWAL 2.4.3通信模块
本网站官方群 工业工程5000人群号 249148633
把机器人仿真程序产生的文件下传到控制柜或者读取控制柜中的文件,利用RS232/BSC实现了文件的上下传。
智能拖地机器人,云鲸 NARWAL RobotM系统实现如图4所示,首先构建了SIASUN机器人模型。
智能拖地机器人,云鲸 NARWAL
智能拖地机器人,云鲸 NARWAL 3 结语
本网站官方群 工业工程5000人群号 249148633
本文介绍了作者开发的机器人离线编程系统RobotM,描述了系统的主要功能及其原理。而今后的主要工作是添加路径规划和碰撞检测模块的设计。
智能拖地机器人,云鲸 NARWAL工业工程网 www.chinaie.net
|