洪惠超,郑力新,谢炜芳
(工业智能化技术与系统福建省高校工程研究中心,福建 泉州 362021)
摘要:依托StepRobotSA1400,研究了OpenGL在机器人仿真系统的应用;通过CoDeSys编写SA1400 PLC控制器程序,基于TCP/IP协议实现PC或其他终端与机器人控制器的通信,实现了在PC对StepRobotSA1400机器人进行在线控制;同时通过离线仿真功能,真实地模拟了实际机器人的运动情况,预测和减少了实体机器人在实际运行中出现的各种问题。
中图分类号:TP24
文献标识码:A36
DOI: 10.19358/j.issn.1674-7720.2017.11.002
引用格式:
洪惠超,郑力新,谢炜芳.基于网络的工业机器人的仿真研究[J].微型机与应用,2017,36(11):5-7,11.
0引言
随着生产力水平的不断进步和科学技术的飞速发展,工业机器人作为先进、智能的工业化设备的代表,在社会生活的很多方面广泛应用\[1\],尤其利用计算机预先对机器人及其工作环境乃至生产过程进行仿真可以得到很好的辅助效果。通过系统仿真,可以在制造单机与生产线之前模拟出实物,缩短生产工期,避免不必要的返工。因此如何精准、忠实地在计算机界面模拟实际机器人的生产过程、所在的工作环境已经成为机器人技术的一个突出问题。除此之外,在工业机器人的应用领域还存在另一个较为严峻的问题:一般的机器人控制器多以实现机器人内部控制为主要目的,缺乏与外界设备的信息交换能力。用户不能以一种有效的手段动态地对机器人本身进行远程指令下发、监控。
如果基于通用的网络技术和目前成熟的计算机图形技术,仿真系统能够实时接收机器人控制器发来的状态数据,动态地以三维模拟方式显示或者将数据存储起来以备将来分析,那么则可以降低机器的研发成本,并极大地提高控制机器人的便利性,因此开发一种基于网络可远程控制的机器人仿真软件是十分必要的。
本文构建了一个在Visual Studio所提供的MFC框架下引入OpenGL图形程序接口技术、基于TCP/IP通信协议开发的机器人运动仿真及在线控制软件。本文将对在MFC下利用OpenGL实现三维显示及运动学建模等关键技术进行研究说明。最后简要阐述了基于通用的网络通信技术与机器人仿真软件相结合的一个应用实例。
1在MFC(Microsoft Foundation Classes)下的OpenGL三维显示技术
OpenGL是由SGI公司所开发的一个成熟而久负盛名的跨平台的计算机图形应用程序接口规范,其高效、功能完善、支持几乎所有现有的主流操作系统平台。本文采用OpenGL2.0版本结合微软基础类库实现系统的人机交互功能。以下简单介绍应用OpenGL和MFC实现三维图形软件的过程。
(1)开发环境配置:应用OpenGL和MFC开发三维图形软件需要用到opengl32.dll和glu.dll这两个文件。在开发本程序时,还使用了glut库,在程序中,可以利用glut提供的各种库函数来实现对鼠标、键盘的消息进行响应以及绘制三维图形\[2\]。
(2)设置像素格式的结构和参数
①填充 PIXELFORMATDESCRIPTOR 结构设置像素格式。
②用ChoosePixelFormat()函数比较传来的像素格式描述和OpenGL支持的像素格式,返回一个最佳匹配的像素格式索引。
③调用SetPixelForlnat用格式索引iPixelFormat来设置hdc的像素格式。
(3)设置着色描述表:OpenGL的着色描述表定义为hRC。为了让程序能够绘制窗口,还需要创建一个设备描述表。Windows的设备描述表被定义为hDC。DC将窗口连接到GDI(图形设备接口)。而RC将OpenGL连接到DC。
(4)添加响应WM_PAINT消息的消息处理函数OnPaint,在函数OnPaint函数体中建立机器人三维模型及绘制其工作环境\[34\]。
(5)建立消息映射和命令传递。
(6)定义场景(包括机器人和其工作环境)重绘函数DrawStepRoot(),在DrawStepRobot()函数中需要绘制包括气缸 、活塞、上下平台和铰链等元件,绘制时这些元件则由更小的细节组成,这些细节均可通过OpenGL以及glut所提供的基本点 、线 、多边形的绘制函数绘制而成;关节与关节之间的相对旋转则可以分别由OpenGL中的glTranslatef()函数所实现,将每个关节角作为函数传入glTranslatef()中,通过DDX_(对话数据交换函数)实现控件值与上述函数参数(如位置、姿态、每个关节的角度)的绑定;登记按钮或鼠标等命令消息,在对应的消息处理函数中通过
重绘函数DrawStepRoot()对机器人的状态进行更新\[45\]。
机器人本体和机器人仿真模型如图1和图2所示。
2在Windows下网络数据通信的实现
本文所搭建的仿真软件是以SA1400机器人本体为客户端,而以其他设备为服务端。目的是实现一台支持TCP/IP协议的终端尽最大的可能对多台机器进行操控。
在实现数据传输的过程中,因为对数据的可靠性和完整性均有极高的要求,基于此,此处选择了多线程流式Socket方式。
以传输机器人6个关节角为例,服务器程序实现如下:
(1)在OnInitDialog()函数中添加用于初始化和建立套接字的代码,用listen()和Accept()函数监听客户端请求。
(2)创建线程对象 pThread用于接收客户端的连接请求:
CThread*pThread=(CThread*)AfxBeginThread(RUNTIME_CLASS(CThread));
这时,服务器方通信的初始化完成,创建新的线程,避免由于通信造成主程序阻塞而不能对机器人进行控制,妨碍用户界面上的操作和结果的显示。
(3)用Send()函数向机器人本体传输数据
对应机器人的6个关节角,定义了一个长度为6的浮点型数组,通过send()函数与机器人本体通信。具体为在消息响应函数中加入如下代码:
send (app>ClientSock, (char*)(data), 24, 0);
这种方法的不足之处是当仅仅只需要更新一个关节角度值时,则另外5个关节角度也需要同步更新,传输的数据量由本来的4 B变为了24 B;以及只能传输机器人的6个关节角度,而对于速度等其余数据则需要另行定义。
为了避免这种情况的出现以及适应更多类型数据的传输,本系统做了如下的设计,定义发送数据包格式如图3。
关节ID:表明当前接收的数据适用于第n个关节。
指示执行动作类型:表明关节ID将做何种状态改变,如速度、旋转角度等。
数据字段:指明了关节ID执行动作的改变量,如速度改变量、旋转角度改变量等。
对于服务器而言,SA1400在接收数据时,服务器解析第一个字段ID,确定需要更新第n个关节角后,解析指示执行动作类型字段以及数据字段,由此机器人做出相应的状态改变。
基于MFC的多线程流式Socket方式的通信设计以及对发送数据包的改进不仅能有效地实现一个终端对多台机器人的控制,同时在发送数据量减少4倍的情况下,实现了机器人多种状态的更新。
3机器人运动学建模
研究工业机器人运动学的运动特性,就是研究各连杆的速度、加速度、位置变量的所有高阶导数;选择合适的方法确定机器人的连杆参数,以及对机器人进行工作空间规划则有助于减小机器人三维尺寸,提高机器人的运行效率\[6\]。
为了描述连杆坐标系之间的关系,Denavit 和Hartenberg提出一种通用的方法,这种方法在机器人的每个连杆上都固定一个坐标系,用4×4的齐次变换矩阵来描述相邻两连杆的空间关系。通过依次变换可最终推导出末端执行器相对于基坐标系的位姿,从而建立机器人的运动学方程\[7\]。
实现方法如下:
对机器人,如图4所示,采用DH参数法进行建模,得到关于SA1400机器人的DH坐标系,如图5所示。
其中图5中参数an表示连杆长度; dn为移动关节移动变量。
根据图5可得关于SA1400的DH参数,如表1所示。其中θn为转动关节变量,αn是两关节轴扭角。
由于所有的运动都是相对于当前坐标系而言的,因此,总的变换矩阵A等于各变换矩阵右乘。
将表1参数代入式(1),从而得到A1、A2、A3、A4、A5、A6。
可得连续的连杆变换为:
所求T中的参数nx、ny、nz、ox、oy、oz、px、py、pz即为根据机器人各关节角度计算出来的末段执行器的姿态和位置,也就是SA1400机器人正运动学方程的建立过程。与之相反的是机器人逆运动方程的建立,即已知末端位姿求出各个关节旋转的角度。
对于机器人求逆解的方法有多种,最常用的方法是封闭解法,采用该方法不仅便于实时控制,而且计算速度快且效率高。封闭解法包含代数、几何两种解法。此处采用一种系统化的代数解法。具体过程如下:如式(2)所示,已知nx、ny、nz、ox、oy、oz、px、py、pz,而A1、A2、A3、A4、A5、A6则为未知矩阵,其中所含的未知变量为θ1、θ2、θ3、θ4、θ5、θ6。用未知的连杆的逆变换左乘方程的两端,把关节变量分离出来,从而求出解,按照这种方法让矩阵左右两边的元素相等便可求出各个关节变量的值。计算过程可用下述等式表示:
4应用实例
本文构建的基于网络和StepRobotSA1400工业机器人的仿真系统基本上能模拟真正机器人所实现的功能,图6为转动关节变量J1~J6为0时,机器人仿真软件的仿真结果;图7为J1~J2为0、J3=30°、J4~J6为0时,机器人仿真软件的仿真结果。
可以从图6、图7中的正运动学求解模块中输入转动关节变量获得机器人末端执行器的位姿矩阵,也可以在逆运动学求解模块中设定末端执行器的位姿矩阵,求得6个关节变量的角度值并在仿真界面中显示。当所求逆运动学解或输入关节角度超过关节范围时(关节角度范围如表1所示),则程序将弹出警告页面(如图8所示),若没有对其进行该设计,当关节超限时,机器人的末端执行器将可能对地板等硬物产生撞击,造成机器人本体的损坏。
机器人模型所对应的状态
5结束语
本文构建了一个基于网络的工业机器人的仿真及在线控制系统。该系统利用OpenGL搭建了机器人本体仿真模型,避免了调试过程中对机器人本体可能造成的损伤;同时引进在线控制功能,对传输的数据包做了进一步的优化,减少了网络的通信量,实现对机器人的远程监控,证明了仿真技术和网络通信结合的可行性。
参考文献
[1] 郭青阳.基于KUKA工业机器人的定位误差补偿方法的研究\[D\].长春:长春工业大学,2016.
[2] 董天平,马燕,刘伦鹏.基于OpenGL的工业化机器人仿真研究\[J\].重庆师范大学学报(自然科学版),2013,30(2): 6064.
[3] 李春雨. 计算机图形学及实用编程技术\[M\]. 北京:北京航空航天大学出版社, 2009.
[4] 冯胜强, 胡绳荪, 申俊琦. 基于UG的弧焊机器人模型装配与运动仿真\[J\]. 天津大学学报, 2009, 42(6):518522.
[5] 祁若龙, 周维佳, 刘金国,等. VC平台下机器人虚拟运动控制及3D运动仿真的有效实现方法\[J\]. 机器人, 2013, 35(5):594599.
[6] CRAIG J J.机器人学导论(第3版)\[M\].贠超,译.北京:机械工业出版社, 2006.
[7] DENAVIT J, HARTENBERG R S. A kinematic notation for lowerpair mechanisms based on matrices\[J\]. Trans.of the Asme. Journal of Applied Mechanics, 1955(22):215221.