首页
|
新闻
|
新品
|
文库
|
方案
|
视频
|
下载
|
商城
|
开发板
|
数据中心
|
座谈新版
|
培训
|
工具
|
博客
|
论坛
|
百科
|
GEC
|
活动
|
主题月
|
电子展
注册
登录
论坛
博客
搜索
帮助
导航
默认风格
uchome
discuz6
GreenM
»
数字电路
» 基于OpenGL的工业机器人三维仿真设计与实现
返回列表
回复
发帖
发新话题
发布投票
发布悬赏
发布辩论
发布活动
发布视频
发布商品
基于OpenGL的工业机器人三维仿真设计与实现
发短消息
加为好友
yuyang911220
当前离线
UID
1029342
帖子
9914
精华
0
积分
4959
阅读权限
90
在线时间
286 小时
注册时间
2014-5-22
最后登录
2017-7-24
论坛元老
UID
1029342
性别
男
1
#
打印
字体大小:
t
T
yuyang911220
发表于 2016-11-23 16:01
|
只看该作者
基于OpenGL的工业机器人三维仿真设计与实现
机器人仿真
,
工业机器人
,
焊接机器人
,
江苏省
,
编程技术
1引言
随着机器人技术的运用与发展,机器人编程技术成为一个很重要的问题。机器人离线编程(OIP,OffLineProgram)具有不需要停止机器人工作和可以通过图形仿真来避免实际机器人运动中的碰撞等优点。目前国内基本没有针对机器人仿真的成型工具,国外有一些商品软件如RoboCAD,ROTSY,Evision等系统,但是RoboCAD价格比较昂贵,不能够普遍推广;ROTSY是基于Motoman机器人的一套仿真系统,但是他的普遍性不强而且价格也比较高。本文以江苏省“十五”攻关项目网络化焊接机器人研制课题为背景,设计了基于
OpenGL
的
工业机器人
三维仿真
机离线软件
RobotM
,完成了对于Couma机器人的离线仿真程序开发。
OpenGL是与图形硬件无关的程序设计接口,而且OpenGL的类库完成三维图形的底层操作,同时又具有建模方便、实时三维仿真、真实感强、平台独立性、真实性强、对于系统的要求并不是很高等优点。所以RobotM利用OpenGL和微软的VC+开发工具以及MFC类库作为底层的图形库接口实现仿真设计。离线仿真原理如图1所示。
2系统结构详述
系统模块图如图2所示。
图2说明了RobotM采用了分层次结构设计的方法,将整体程序设计成为3层结构,每一层的设计都相对独立,从而提高了程序的可移植性并且减轻了程序的维护难度。
2.1模型层设计
模型层利用OpenGL和MFC类库,构建了一系列底层的类对象,RobotM利用这些封装好的类对象来构建场景以及完成场景和用户的交互。在RobotM设计中增加了空间实体、空间模型、机器人模型的概念。
空间实体就是单个的最简单的部件,而空间模型是若干个实体按照一定方式的组合。由于机器人仿真具有一定的特殊性,把机器人设定为一个实体或者一个模型显然是不合适的,所以可以把机器人以每一个转轴为界限分割成若干部分,而把分割好的各个部分都作为空间模型,从而形成了若干空间实体一空间模型,若干空间模型一机器人模型的组合方式。
利用这种分层次的组合方式可以很容易控制仿真程序的显示和交互,例如利用RobotM仿真一个汽车焊接生产线时,用一个空间模型对象来描述汽车对象可以很容易地控制这个汽车对象。RobotM对于每种空间实体类型都利用OpenGI提供的GlgenList/glCallList函数实现了一套构建/绘制的函数,利用空间实体一空间模型一机器人模型的组织方式和C++面向对象技术中的多态性,最终把机器人模型和空间模型的绘制工作都归结为空间实体对象的绘制。
RobotM把仿真内容保存为流文件。文件是按照分层结构且以相对路径存储并设计的,即工作区、机器人模型、空间模型、路径等文件如图2所示,用户通过打开工作区文件从而搜索并获取其他类型文件的信息以建立场景对象。机器人、模型、路径文件都可以为其他的工程所用,具有比较良好的重用性;相对路径使得用户即使改变了工程目录存放的位置也不会影响文件的获取,增加了RobotM的健壮性。
2.2场景层设计
场景层主要功能是完成场景中对象的建立、保存、绘制以及交互。作为模型层和示教层的中间层,场景层是机器人仿真系统中的连接部分。场景层从文件建立的过程如图3所示。
由图3可以看出场景的建立是一个从若干文件到仿真程序的空间实体对象的转换过程,RobotM把用户选取的工作区和其他一系列的文件转化为RobotM可以识别的数据结构对象;同样的,把RobotM中的数据结构对象根据一定规则写入文件完成了保存过程。场景的绘制是仿真程序的重要部分。场景层利用模型层的实体绘制的接口,通过场景一(机器人)一空间模型一空间实体的方式调用各自的绘制函数,RobotM需要在屏幕上显示动画来表示仿真结果,所以程序的绘制效率十分重要。
除了运用普通的OpenGL绘制的各种增加效率的方式之外,本文为提高绘图效率,在RobotM中提出了“必要重构”的方法。即利用几个BOOI量做为场景的各个部分(包括机器人模型、空间模型等部分)的重构标志(重构是指利用OpenGL提供的glGenIist函数将需要绘制的内容保存在内存区域中,每次绘制时直接从中提取,而不需要再次组织)。RobotM在绘制的每一帧都只重构改变过位置或者旋转角度的对象(机器人模型和空间模型对象包括在内),而对于没有改变的对象则直接调用glCallList将对象绘制出来。这样每一帧的绘制效率有很大提高,在程序仿真的时候不会出现显示打顿的现象。
基于OpenGL的工业机器人三雏仿真设计与实现场景的交互提供给用户比较便捷的操作功能。用户根据自己的需要可以修改观察和控制整个场景的方式(如旋转、平移、改变光照等),还可以直接用鼠标在场景中选取目标点或者空间实体。
2.3示教层设计
示教层主要是完成离线编程设计。上2层已经为示教层的设计打下了良好的基础。机器人离线编程的关键内容是能够根据用户的输入确定仿真程序中机器人的运动方式和机器人运动位置,这种关系与实际机器人和示教盒之间的关系相类似。RobotM通过保存各个位置点和各个点之间的运动方式来描述机器人运动的轨迹来实现仿真。
RobotM有一个小型解释器,他能够实现机器人编程语言和RobotM能够识别的运动文件格式的相互转换。由于机器人编程实现的运动程序编译器有自己的语法和语义,所以RobotM必须能够实现控制柜运行的机器人控制文件和RobotM设计的程序相互转换。
RobotM提供了2种确定机器人仿真运动末端点的方式:即转角运动和定点运动。转角运动如同实际机器人运动中的示教盒示教,能够通过用户输入在仿真程序中,使得指定的机器人各个关节部分运动,从而实现机器人的转角运动;而定点运动是RobotM中相对来说比较重要的同时也是转角运动无法做到的。利用场景层提供的接口,用glLoadName给场景中的每个需要确定位置的空间实体/空间模型/机器人模型创建惟一标示的ID,在用户鼠标选取空间中的点时利用ID来确定用户所选取的对象,在获取对象之后利用OpenGI的glUnProjeet函数获取鼠标点击位置在空间中的“世界”坐标系下的位置,完成鼠标平面坐标一空间坐标的转换,利用仿真机器人的运动方法使仿真机器人末端点运动到该空间坐标,从而确定机器人需要运动到的某个点的位置。
通过若干步的上述2种过程的重复,完成这一系列点的设置,可以创建出路径文件。路径文件可以用来仿真也可以下传到机器人控制柜。
2.4辅助模块设计
机器人仿真程序还有其他一些独立模块并没有归结到上述3层结构中。但是这些模块和上述3层之间有着紧密联系。
2.4.1算法模块
考虑到机器人仿真程序需要对路径进行仿真,所以必须提供相应的机器人的正逆解算法以及关节插补、直线插补、圆弧插补等算法。由于对于不同的机器人有不同的正逆解,所以在仿真系统中,实现一个通用的上述算法比较困难,所以尝试用文件来描述机器人的各项参数,取得了比较好的效果。
2.4.2其他模型模块
仿真程序提供了不同的构建模型的方式,分别为Mdl,3DS,Obj文件格式。也就是说提供了不同的文件接口,通过这些文件接口可以在场景中实现不同的构建模型方式。
2.4.3通信模块
把机器人仿真程序产生的文件下传到控制柜或者读取控制柜中的文件,利用RS232/BSC实现了文件的上下传。
RobotM系统实现如图4所示,首先构建了SIASUN机器人模型。
收藏
分享
评分
继承事业,薪火相传
回复
引用
订阅
TOP
返回列表
电商论坛
Pine A64
资料下载
方案分享
FAQ
行业应用
消费电子
便携式设备
医疗电子
汽车电子
工业控制
热门技术
智能可穿戴
3D打印
智能家居
综合设计
示波器技术
存储器
电子制造
计算机和外设
软件开发
分立器件
传感器技术
无源元件
资料共享
PCB综合技术
综合技术交流
EDA
MCU 单片机技术
ST MCU
Freescale MCU
NXP MCU
新唐 MCU
MIPS
X86
ARM
PowerPC
DSP技术
嵌入式技术
FPGA/CPLD可编程逻辑
模拟电路
数字电路
富士通半导体FRAM 铁电存储器“免费样片”使用心得
电源与功率管理
LED技术
测试测量
通信技术
3G
无线技术
微波在线
综合交流区
职场驿站
活动专区
在线座谈交流区
紧缺人才培训课程交流区
意见和建议