欢迎来到天天文库
浏览记录
ID:23755721
大小:54.50 KB
页数:5页
时间:2018-11-10
《基于lua的工业机器人解释器实现的研究》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、基于Lua的工业机器人解释器实现的研究张茂玲1杨锦涛2(1.镇江中船现代发电设备有限公司,江苏镇江212009;2.上海擎宝机器人有限公司,中国上海201600)【摘 要】针对机器人编程语言和控制程序模块化的发展需求,提出一种基于Lua脚本语言的机器人语言解释器的实现方法。用Lua作为整个系统的构建者,对机器人语言进行词法、语法分析,调用控制代码完成对机器人的控制,具有扩充性和维护性强,系统开发效率高,解释效率高的特点。该解释器结合vs2008运行,利用robotictoolboxformatlab仿真验证,证明该解释器可以很好地解释工业机器人语言,
2、为解释器的构建提供了一种新的模式。.jyqkd[]cmd={MOVJ={“P”,“V”,“Z”,cfunc=cmovj},MOVL={“P”,“V”,“Z”,cfunc=cmovl},……}这里table的使用体现了Lua的灵活之处,用指令直接作为table的索引,使用cmd[c[1]]可以直接索引到相应指令对应的参数和控制函数,进而进行参数检测和函数调用。这个技巧使得逻辑简单清晰,类似数组的索引方式提高了解析效率,并且在进行增加或更改指令等后期维护时,只需在cmd[]中添加或更改就可以了,具有很好的可维护性。用cmd[c[1]][j]匹配参数,检测
3、参数格式是否正确,格式错误时,输出错误类型。在C++代码中使用注册函数Lua_register(L,“lname”,ame),便可以在Lua中直接使用cmd[c[1]].cfunc(c[2],c[3],c[4])用来调用不同的控制模块并传递参数,控制模块中通过Lua_tostring(),Lua_tonumber()等来得到传递的参数。2.3 基于Lua的解释器界面实现常用的界面实现形式是Qt,基于Lua的解释器研究采用一种新颖的实现形式——Qtlua,Qtlua库旨在用Lua脚本语言使Qt应用程序可脚本化,为QtScript模式提供一种新的选择,因
4、此它具有脚本的特点[2]。很多脚本语言都可以实现对Qt的封装,之所以选择Lua是因为Lua的小巧,可以将解释器模块式的嵌入到其他机器人平台中,并且可以方便的进行在线维护和升级。Qtlua中的部分函数介绍:信号与槽——connectsignalandslotofgivenQtobjectsqt.connect(qobject1,“qt_signal_signature()”,qobject2,“qt_slot_signature()”)——connectslottogivenluafunctionqt.connect(qobject,“qt_signa
5、l_signature()”,lua_function)……文件操作函数filename=qt.dialog.get_open_filename([“caption”,“directory”,|“filter”,QFileDialog::Option])filename=qt.dialog.get_save_filename([“caption”,“directory”,“filter”,QFileDialog::Option])……标准消息框(关于,警告,错误等等)qt.dialog.msg_about(“text”[,“title”])butto
6、n=qt.dialog.msg_critical(“text”[,“title”,QMessageBox::StandardButtons,QMessageBox::StandardButton])button=qt.dialog.msg_information(“text”[,“title”,QMessageBox::StandardButtons,QMessageBox::StandardButton])……Qtlua利用Qtdesigner可视化的构建界面,用Lua实现具体的功能。这种嵌入式的界面模块可以方便的扩展原有应用程序的功能。编译器可以
7、实现打开、新建、保存程序文件;单步、全速、终止运行等操作。3 实验及结果用自己开发的解释器软件RLI(RobotLanguageInterpreter)结合vs2008来解析文本,调用控制模块生成数据,利用robotictoolboxformatlab进行仿真验证。在编辑时加入一些不必要的空格和换行、替换控制模块,以测试解释解析的正确性。大量的测试表明,解释器能够正确的解析机器人语言,调用相应函数,执行循环结构,控制机器人执行相应动作等。当机器人程序编写有错误时,可以对其中的错误进行提示。图1中的程序描述了工作流程:机器人从位置点P001移动到位置点
8、P002,然后按照弧线-直线-弧线对工件喷涂,等待工件底座旋转,再次喷涂,反复几次后停止于位置点P007,移
此文档下载收益归作者所有