APP下载

基于动态链表的机器人离线编程系统设计

2016-04-12Designofrobotofflineprogrammingsystembasedondynamiclist

制造业自动化 2016年3期
关键词:焊接机器人架构设计

Design of robot off-line programming system based on dynamic list

李 静1,李 君2,郝卫东2LI Jing1, LI Jun2, HAO Wei-dong2(1.桂林电子科技大学信息科技学院,桂林 541004;2.桂林电子科技大学 机电工程学院,桂林 541004)



基于动态链表的机器人离线编程系统设计

Design of robot off-line programming system based on dynamic list

李静1,李君2,郝卫东2
LI Jing1,LI Jun2,HAO Wei-dong2
(1.桂林电子科技大学信息科技学院,桂林 541004;2.桂林电子科技大学 机电工程学院,桂林 541004)

摘要:机器人离线编程系统主要是实现程序的编辑转换和离线仿真分析,不同类型的系统其系统架构很相似,且系统与C/C++有很好的兼容性。采用C/C++语言,对系统架构和重要模块进行编程设计,可以提高系统的二次开发能力和程序的可移植能力。针对系统的数据处理特点,提出了采用动态链表进行数据操作的方法,实现了语言指令到机器人可执行文件的转换。在MFC框架中,完成了离线编程仿真系统的设计。通过用户界面输入机器人语言程序,在仿真界面中输出了仿真效果图,仿真结果表明,所设计的系统能实现机器人的离线编程和仿真。通过串口模块,将机器人可执行文件发送给机器人控制系统,控制川崎FS30N机器人进行了焊接实验。

关键词:焊接机器人;离线编程系统;架构设计;动态链表

0 引言

工业机器人具有良好的可编程性,其编程能力决定了工业机器人功能的灵活性和智能性。离线编程系统能够进示教编程的不足,具有显著的优点[1]。离线编程系统在很大程度上满足了工业生产的需求,但是实用化程度不深,在人机界面的人性化设计、轨迹规划算法、系统鲁棒性及二次开发能力等技术需要进步研究[2,3]。主流的离线编程系统有:基于VC++与OpenGL的离线编程系统[4];借助MATLAB的数值计算和绘图功能开发的具有维可视化功能的离线编程系统[5];通过Solidworks 等维建模软件的API接口进行二次开发的离线编程系统[6,7]。这些编程系统的功能和系统架构都很类似,而且与C和C++都有很好的兼容性。

本文将对系统进行功能模块划分,优化系统架构。针对模块的顺序执行特性和数据量不确定的特点,提出了采用动态链表进行数据操作的方法,并结合设计的轨迹规划模块,实现了语言指令到机器人可执行文件的转化。在MFC框架中,完成了离线编程系统的设计。

1 系统架构设计

图1 离线编程系统工作流程图

2 动态链表

程序模块主要是程序编制功能,具有程序管理、程序编辑、指令集管理、自主编程、程序检测及程序转换功能,每个功能的实现都离不开数据的读取、转换和存储,程序的数据处理能力将直接影响到系统的整体性能[8]。程序模块的执行是按照定规则顺序单向执行的,且数据量不确定,因此适合采用动态链表进行数据的存储和转换。数据处理流程如图2所示。

图2 数据处理流程图

图中,语言指令通过用户界面或自动编程系统输入,根据指令解析法则对指令集进行语法分析和词法分析,并生成指令序列和相应的路径点数据序列。根据指令序列分配动态内存建立动态链表,将存储路径点信息的指针赋给动态链表中的指针变量Robot_Route,将指令字符串指针赋给指针变量Robot_Instruction,将结构体指针变量R_TCBNext赋NULL值,将结构体的指针赋给上个结点的结构体指针变量R_TCBNext,将结构体中的数据指针Robot_Memory赋NULL值。所建立的动态链表的表头指针存放在变量Robot_Head中,链表最后个结点的指针变量R_TCBNext的值为NULL。

遍历建立的动态链表,将结构体指针Robot_Cur和Robot_List指向链表头指针Robot_Head,读取结构体中变量Robot_Instruction,如果存放的是控制指令,则读取变量Robot_Cur->R_TCBNext,若为NULL,则遍历结束,否则将结构体指针Robot_List指向Robot_Cur->R_ TCBNext;如果存放的是运动指令,则调用轨迹规划函数,将Robot_Route中的路径信息转化为各关节转角序列,并存放在内存中,并将存放数据的内存指针赋给结构体变量Robot_Cur->Robot_Memory,如果变量Robot_ Cur->R_TCBNext的值为NULL,则遍历结束,否则将结构体指针Robot_List指向Robot_Cur->R_TCBNext。在进行程序的编写和调试中,程序的修将调用链表的插入和删除函数对动态链表进行更,在编译修后的程序时将只对插入的结点进行计算,可以缩短程序编译和修的时间,提高工作效率。

轨迹规划完成后,所有信息都存放在动态链表中。机器人可执行文件可以通过遍历链表的方式生成。机器人运动仿真也可以通过遍历链表的方式进行。通过运动仿真和误差分析后的机器人可执行文件将以txt文件的形式保存。

3 轨迹规划模块设计

轨迹规划的作用是按照运动指令类型生成结点之间的路径,其过程是在相邻结点之间通过插补算法生成位姿点数据链,逆运动学计算后进行关节空间的轨迹规划生成各关节转角数据链。算法功能树如图3所示。

图3 轨迹规划算法功能树

图中,将轨迹规划分为运动指令和自动编程指令。运动指令适用于点、直线、圆弧等简单轨迹的描述。自定义指令可以描述复杂的轨迹,而且可以通过指令读取维模型软件等方式生成的轨迹点数据包,实现复杂轨迹的轨迹规划。轨迹规划程序流程图如图4所示。

图4 轨迹规划流程图

在轨迹规划计算过程中,以指针作为函数间参数传递的载体,数据的存取与转化通过动态链表进行操作,接口函数便可设计为如下的形式:

INT16* Robot_Track(struct Robot_tcb*);

函数中输入参数为动态链表的结构体指针,返回值为轨迹规划后的数据块指针。函数内部通过函数指针调用插补算法、离散算法、逆运动学计算等函数。为了便于函数的添加、编写、调用,函数设计为统形式:

void* (*C_Track)(void*);

函数的数据量和数据类型是变化的,所以只能在函数中调用malloc()函数分配动态内存,在完成轨迹规划计算后再释放分配的内存资源,实现内存资源的重复利用。采用统的函数类型和动态数据处理可以更方便的添加新的算法函数和对算法函数的修,更有利于对系统的进和研究。

4 MFC程序设计

MFC集成了微软公司提供的许多类库,通过调用库中的类可以实现绝大部分所需的功能,而且所开发的系统与MATLAB、Solidworks等软件能完全兼容。所设计的离线编程系统用户界面如图5所示。

图5 用户界面

系统所采用的机器人语言是詹少坤等人开发的ZSK机器人语言[8]。运动指令包括关节运动指令MOVJ,直线运动指令MOVL,圆弧运动插补指令MOVC,点运动指令MOVP以及用于复杂轨迹编程的指令MOVT等。系统具有程序编辑、离线仿真、串口通信、坐标系参数设置等功能。机器人指令通过Edit编辑框控件输入。在点击“坐标系设置”按钮后,可以对工件坐标系和工具坐标系进行参数设置。点击主界面“仿真系统”按钮,可以进行离线仿真操作。点击主界面的“保存”按钮,将调用文件类CFile的成员函数,将机器人可执行文件以txt文档的形式保存。在通信模块中,设置串口参数,并打开串口资源,点击“下载”按钮将弹出文档打开对话框,打开保存的机器人可执行文件,可执行文件中的内容将通过函数WriteFile下载至机器人控制柜控制机器人运动。

5 实验验证

该离线编程系统是针对FS30L机器人开发的,在离线编程系统的工件坐标系设置界面中输入参数,在离线编程系统的输入编辑框中依次输入直线、圆弧、点、控制指令的代码。点击“编译”按钮,弹出编译成功后,点击“离线仿真”按钮,在弹出的界面中点击“开始”按钮,离线仿真界面将显示仿真结果。

图6为关节转角曲线图,图中的曲线连续且平滑,说明各关节运动平稳,速度和加速度小,机器人在运动过程中没用强烈的柔性和刚性冲击。图7为末端执行器端点轨迹图,图中显示的图形与输入的运动指令所要求的运动轨迹相同。表明,离线编程系统的设计是合理的。将通过离线编程和误差分析验证的机器人可执行文件保存为txt文档。连接好电脑与机器人控制柜的串口设备,设置串口通信参数,打开串口资源,点击“下载”按钮,将保存的txt文档发送给控制柜,控制柜读取数据控制机器人进行焊接运动。机器人焊接实验现场效果图如图8所示。

实验结果表明,机器人的焊接运动与离线仿真结果相同,且焊缝的焊接质量能满足生产要求。

图6 关节转角曲线图

图7 末端执行器端点轨迹图

6 结束语

针对机器人离线编程系统,提出了采用动态链表进行数据操作的方法,实现了语言指令到机器人可执行文件的转换,对机器人轨迹规划模块的程序设计进行了优化。以FS30N机器人为控制对像,在MFC框架中开发了离线编程系统,系统以ZSK语言为机器人编程语言,通过仿真界面输出程序仿真结果,将通过仿真验证和误差分析的机器人可执行文件发送给机器人控制柜控制机器人进行焊接实验,实验结果显示机器人的实际焊接运动与仿真结果相同,且焊接质量符合生产要求。

图8 机器人焊接实验图

参考文献:

[1] Pan Z, Polden J,Larkin N, Duin SV, Norrish J.Recent Progress on Programming Methods for Industrial Robots[J].Robot Comput Integr Manuf,2011,28(2):87-94.

[2] 孟国军.工业机器人离线编程系统关键技术的研究[M].华中科技大学,2011.

[3] Weidong Zhu, Weiwei Qu, Lianghong Cao, Di Yang , Yinglin Ke.An off-line programming system for robotic drilling in aerospace manufacturing[J].Int J Adv Manuf Technol 2013,68:2535-2545.

[4] 祁若龙,周维佳,刘金国,肖磊.VC 平台下机器人虚拟运动控制及3D 运动仿真的有效实现方法[J].机器人,2013,35.(5):594-599.

[5] Carmelo Mineo,Stephen Gareth Pierce, Pascual Ian Nicholson, Ian Cooper.Robotic path planning for non-destructive testing – A custom MATLAB toolbox approach[J].Robotics and Computer-Integrated Manufacturing,2016,37:1-12.

[6] 宋鹏飞,和瑞林,苗金钟,单东日.基于Solidworks的工业机器人离线编程系统[J].制造业自动化,2013,35(5):1-4.

[7] 赵凤申.基于UG/Open的机器人复杂曲线离线编程系统设计[J].制造业自动化,2012,34(1):109-112.

[8] 詹少坤.基于开放式焊接机器人系统的离线编程方式研究[M].哈尔滨工业大学,2009.

分析与探讨

作者简介:李静(1983 -),女,陕西澄城县人,讲师,工学硕士,研究方向为机器人技术、电子技术应用及开关电源等。

收稿日期:2015-12-19

中图分类号:TP242

文献标识码:A

文章编号:1009-0134(2016)03-0057-04

猜你喜欢

焊接机器人架构设计
浅析工业网络安全架构设计
基于安全性需求的高升力控制系统架构设计
虚拟收费站架构设计与高速公路自由流技术
智能无人集群任务规划系统架构设计
大数据时代计算机网络应用架构设计
机器人示教误差成因分析及消除
焊接机器人系列教材开发与应用
焊接机器人在汽车焊装领域中的应用分析
“云上贵州”智能交通云的架构设计
龙门机器人激光焊接系统研制