喻 敏,李成刚,李富中,王正军,马越民
(南京航空航天大学机电学院,江苏南京 210016)
当前工业机器人的应用越来越广泛,但是存在机器人的控制仿真不具开放性和运动精度低等问题。世界上主要机器人生产商都相应提供了机器人编程软件以适应实际生产,同时随着对机器人运动精度关注度的提高,也相继出现了各种机器人标定软硬件设备。美国Dynalog公司提供的机器人单元校正系统DynaCal,可以一次测量并校准中心点、连杆长度、各夹角角度、home点,并减少人为运算的时间和误差,一般校准一个机器人在20min左右[1];德国 Teconsult公司提供的测量校正系统ROSY,利用校准球和照相机校准机器人。国内在机器人离线编程仿真领域也进行了相关的研究[2-4],但是开发的仿真控制软件和国外相比仍有差距。
本文利用OpenGL和MFC在VC6.0平台上开发了工业机器人运动控制及标定界面,通过机器人三维模型的导入,编写机器人逆解和轨迹规划算法、上位机与机器人控制器的通讯程序、坐标系标定及参数辨识程序,实现了工业机器人的离线轨迹规划及控制,同时能够快速完成机器人精度分析及标定实验。
OpenGL是SGI公司为图形工作站IRIS开发的一种快速、高质量的开放三维图形程序库,而VC6.0继承了OpenGL的图形标准,方便了程序设计人员实现三维图像的显示。
为在VC界面上实现工业机器人的运动仿真,需要导入并显示机器人的三维模型。其具体流程图如图1所示。
图1 导入并显示机器人的三维模型流程图
首先对VC的开发环境进行设置,以便在程序中能够调用OpenGL函数。在需要调用OpenGL函数的类的头文件中添加 3个头文件:gl.h、glu.h、glaux.h,同时在 ProjectSettingsLink菜单的 Library编辑框中增加3个静态链接库文件:opengl32.lib、glu32.lib、glaux.lib。
可借用两种方法通过OpenGL显示三维图形:一种是利用其提供的三维图形绘制函数绘制点、线、面组合成三维模型;另一种是先利用其他三维绘图软件事先绘制好三维模型,之后利用转换软件转化成能够被计算机识别的程序文件。
本文采用第二种方法。首先利用SolidWorks软件建立工业机器人三维模型,利用3DS MAX转化成STL格式的文件,之后利用VIEW3DS将STL文件转化成能够被VC读取的.h和.gl文件。接着对机器人三维模型的显示窗口进行设置,此时在PreCreateWindow函数中添加下列语句:cs.style=WS_CLIPSIBLINGS|WS_CLIPCHILDREN,同时增加编写类成员函数bSetupPixelFormat(HDC hDC),重新设置像素格式、创建着色上下文实现绘图环境的初始化。
为了提高显示效率,利用OpenGL的双缓存技术,此时绘制函数绘制的场景先写入后台,当需要显示机器人三维模型时,利用 SwapBuffers(m_hDC)交互缓冲区实现机器人三维模型的显示;同时通过设置启用定时器OnTimer(intnIDEvent)实现画面的刷新,达到动画的显示效果。
为了实现机器人的运动学仿真,建立了正逆运动学模型。针对导入的机器人型号获得相关的D-H参数,利用连杆矩阵变换方法,得到机器人末端坐标系在基坐标系下的位姿矩阵。
机器人连续轨迹的离线编程利用机器人的逆解和轨迹规划算法实现。首先对末端连续轨迹进行离散得到各个离散点的位姿矩阵,之后代入逆解程序,求得各个离散点处机器人各关节的转角,同时要进行越限判断和能量最优轨迹的优化。
为实现机器人各连杆的变化显示,首先设置好glMatrixMode(GL_MODELVIEW),再利用 OpenGL的几何变换函数 glTranslatef()、glRotatef()、glScalef()实现程序算法对机器人的控制。本文实现的机器人直线轨迹规划和圆弧轨迹规划示意图如图2和图3所示。
图2 机器人连续直线轨迹规划
上位机与机器人控制器通讯的实现通常需要用到总线数据交换协议,文献[5]提供了一种通过EXCOM协议访问机器人控制器数据库的方法及两者之间的数据传输方式和消息格式。
图3 机器人圆弧轨迹规划
本文采用串行通信连接器RS232连接PC机和机器人的控制器COM1口,在PC端利用VC6.0提供的MSComm控件,通过该串行端口发送和接收数据,为人机交互应用程序提供串行通信功能[6]。
串行通信要求两端的传输速度、数据位长、停止位和奇偶校验方式必须一致,可通过在机器人控制器端设置相应参数,同时在VC中调用串口初始化程序:
查阅ABB工业机器人控制器的相关资料,获得机器人各关节轴绝对编码器数据的网络号、节点号和相应的I/O控制端口节点号,编制数据通讯发送和接收程序,实现上位机对机器人控制器的控制。
通过串口通讯实现上位机与测量装置的数据通讯,将测量装置的测量数据实时传送到上位机软件中,达到动态监测机器人运动的目标。之后利用精度分析模块对机器人目标轨迹和实际轨迹之间的误差进行在线分析,以便快速了解机器人的运动精度,同时为机器人误差参数辨识及末端位姿误差补偿做准备。本文得到的精度分析示意图如图4所示。通过调用精度分析模块,能够实时地显示机器人末端位置和姿态误差。
图4 机器人末端位置和姿态误差
为了提高机器人的绝对定位精度,需要测量机器人在某些姿态下的末端位姿。而测量装置测量得到的位姿数据需要转换为相对于机器人基坐标系下的坐标数据,因此涉及到机器人基坐标系和测量坐标系的转换关系计算,即机器人基坐标系标定。同时标定实验需要一个标定块放置在机器人末端上,此时需要考虑工具坐标系的标定。通过选择相应的标定方法,编制对应的标定计算程序,利用上位机与测量装置的数据通讯,即可快速实现机器人基坐标系和工具坐标系的标定,其标定示意图如图5和图6所示。
图5 机器人基坐标系标定
在图5和图6中,Tbc、Tte分别表示机器人基坐标系和测量坐标系之间、机器人工具坐标系和末端坐标系之间的转换矩阵。
图6 机器人工具坐标系标定
在准确得到基坐标系与测量坐标系、工具坐标系和末端坐标系的转换关系后,通过选择合适的误差模型、参数辨识方法和末端位姿误差补偿方法,使用编写的程序能够快速计算机器人的几何参数误差和误差补偿转角,实现机器人运动学的快速标定。机器人几何参数辨识和误差补偿模块示意图如图7和图8所示。
图7 机器人几何参数误差辨识
图8 机器人误差补偿转角求解
采用 OpenGL和 MFC,在 VC6.0平台上开发的对话框界面如图9所示。
图9 RobotCAL整体界面
从图9可以看出,整个界面还能够进行机器人流程管理,能实时显示系统信息,标记机器人标定的完成情况,同时能够在线实时监测机器人和测量仪的工作情况。为了更好地体现对机器人的控制,增加了点位控制模块,能够实现对关节轨迹的控制和一键回零操作。
本文利用OpenGL和MFC在VC6.0平台上开发了用于工业串联机器人的运动控制和快速标定软件界面。针对选择的机器人型号,能够实时显示机器人的3D模型、各D-H参数和转角范围,运动学仿真模块利用D-H参数和连杆变换矩阵计算机器人的正逆运动学模型,利用直线和圆弧的轨迹规划算法,实现了机器人连续直线、圆弧的运动仿真,利用串口通讯实现上位机分别和测量装置、机器人的通讯。基于测量装置的测量数据,根据编写的程序能够快速完成机器人基坐标系和工具坐标系的标定,同时能够实现对机器人精度性能分析的实时显示。通过选择合适的误差模型、参数辨识、误差补偿及机器人要求达到的精度,能够快速完成机器人的参数辨识和误差补偿。
[1] Cheng F S.The method of recovering robot TCP positions in industrial robot application programs[C]//Proceedings of the 2007 IEEE International Conference on Mechatronics and Automatioin.Harbin:IEEE Press,2007:805 -810.
[2] 王志坚,陈松乔,蔡自兴,等.ABB工业控制系统与外部计算机通讯软件设计[J].微计算机信息,1998,14(2):54 -57.
[3] 邱长伍,曹其新,长孙郁男,等.机器人图形化编程与三维仿真环境[J].机器人,2005,27(5):436 -440.
[4] 曹自洋,郝矿荣,翟雪琴.基于OpenGL的DELTA并联机器人实时动态仿真[J].计算机仿真,2004,21(3):74 -77.
[5] 栾轶佳,赵英凯,俞辉,等.用VC++实现ABB工业控制系统与上位机的通信[J].自动化仪表,2006,27(10):58 -66.
[6] 李现勇.Visual C++串口通信技术与工程实践[M].北京:人民邮电出版社,2002.