首页 基于Lua的工业机器人解释器实现的研究.doc

基于Lua的工业机器人解释器实现的研究.doc

举报
开通vip

基于Lua的工业机器人解释器实现的研究.doc基于Lua的工业机器人解释器实现的研究.doc 基于Lua的工业机器人解释器实现的研究 张茂玲1 杨锦涛2(1.镇江中船现代发电设备有限公司,江苏 镇江 212009;2.上海擎宝机器人有限公司,中国 上海 201600)【摘 要】针对机器人编程语言和控制程序模块化的发展需求,提出一种基于Lua脚本语言的机器人语言解释器的实现方法。用Lua作为整个系统的构建者,对机器人语言进行词法、语法分析,调用控制代码完成对机器人的控制,具有扩充性和维护性强,系统开发效率高,解释效率高的特点。该解释器结合vs2008运行,利用...

基于Lua的工业机器人解释器实现的研究.doc
基于Lua的工业机器人解释器实现的研究.doc 基于Lua的工业机器人解释器实现的研究 张茂玲1 杨锦涛2(1.镇江中船现代发电设备有限公司,江苏 镇江 212009;2.上海擎宝机器人有限公司,中国 上海 201600)【摘 要】针对机器人编程语言和控制程序模块化的发展需求,提出一种基于Lua脚本语言的机器人语言解释器的实现方法。用Lua作为整个系统的构建者,对机器人语言进行词法、语法 分析 定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析 ,调用控制代码完成对机器人的控制,具有扩充性和维护性强,系统开发效率高,解释效率高的特点。该解释器结合vs2008运行,利用robotic toolbox for matlab仿真验证,证明该解释器可以很好地解释工业机器人语言,为解释器的构建提供了一种新的模式。教育期刊 关键词 Lua;机器人语言;解释器;模块化, 引言工业机器人的快速发展,逐渐使人类从繁重、单调或是危险的工作中解放出来。为了缩短机器人的开发周期,需要一种简单易懂的语言对机器人进行编程,这就是机器人语言产生的初衷[1],它更符合人的语言习惯和思维方式,即使不懂编程语言的工作人员也能够很快的理解和运用。这就需要把这种类人思维的指令语言解析成为C/C++能够理解和运用的语言。机器人语言解释器的主要功能就是将文本形式的简单的机器人语言,也就是指令代码转换为程序需要的数据结构或 格式 pdf格式笔记格式下载页码格式下载公文格式下载简报格式下载 ,以控制机器人的运行,所以解释器在机器人软件系统中起到非常重要的作用,其解释效率将直接影响工业机器人的工作效率。Lua的 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 目的就是为了嵌入到应用程序中,从而为应用程序提供灵活的扩展和定制功能。轻量级Lua语言的官方版本只包括一个精简的核心和最基本的库。这使得Lua体积小、启动速度快,在目前所有脚本引擎中,Lua的速度是最快的[2]。这一切都决定了Lua是作为嵌入式脚本的最佳选择。因此选用Lua脚本语言构建解释器。与文[3][4]中的解释器不同的是Lua不仅仅是把参数传递给主程序。基于Lua的解释器用Lua整合现有资源,构造整个系统的框架,调用控制模块来实现具体功能,降低模块之间耦合程度,其优势在于扩展性、复用性较强,并且方便实现更复杂的结构和逻辑,为将来更高级的机器人语言解析提供了可能。脚本语言无需编译,在解释器的开发阶段可以实现快速、实时的修改调试,缩短开发周期。1 工业机器人控制系统及编程语言设计1.1 工业机器人控制系统操作者在界面利用规定的机器人语言指令编写程序,用解释器对机器人语言进行解析,调用相应的控制模块,控制模块包括路径规划模块、速度规划模块、运动学模块和动力学模块,完成轨迹规划、插补、逆运动学等运算,最后Lua把伺服电机需要的关节角度、关节角速度和加速度参数传递给运动控制器,实现对机器人的控制。1.2 工业机器人编程语言设计机器人编程语言需要运动指令和流程控制指 令,解释器的任务是要对指令进行解析,控制机器人完成指令动作。2 基于Lua的解释器设计2.1 Lua简介Lua是一种嵌入式语言,Lua具有与C/C++良好的交互能力,十分简洁的API,可以说是目前脚本语言中做的最好的[1]。我们可以把Lua作为C/C++的一个库,同样也可以把C/C++作为Lua的一个库。Lua与C/C++可以通过一个虚拟栈来进行数据交互,十分简洁,这一点对实现工程的模块化非常重要。解释器将C++作为 Lua的一个库来使用;Lua提供了丰富的字符串处理 关于工期滞后的函关于工程严重滞后的函关于工程进度滞后的回复函关于征求同志党风廉政意见的函关于征求廉洁自律情况的复函 数;灵活的table和function,table是Lua中一种特别的结构,类似数组,但它其中的元素可以是任意类型的,甚至可以是一个函数。Function具有参数变长机制,这些为解析工作提供了极大的方便;Lua具有可移植性,Lua可以运行在任何平台上,包括:PlayStation、Xbox等等。由于Lua具有的这些特点,它可以作为一种高效便捷的解析工具。2.2 基于Lua解释器的体系结构首先编辑机器人程序,编辑完成后,调用Lua读取文本中的机器人程序,解析每一句代码,检测词法语法错误,有错误时抛出错误类型,无错误时分解成指令和参数,根据不同的指令调用不同的控制模块:把示教点位置姿态信息传递给路径规划模块,得到路径参数,把速度参数和路径参数传递给速度规划模块,把速度规划参数和路径参数传递给插补模块,得到笛卡尔空间末端执行器插补状态参数,最后调用逆运动学求解模块,推出六个关节运行时间对应的位置、速度、加速度信息,传递给伺服驱动控制器完成动作。在这里Lua不仅是传统解释器的作用,而是整个系统的调度者,有利于机器人控制系统的模块化,这样一来,假如速度规划模块需要优化,我们可以直接把这个模块替换成优化后的模块。例如解释器对下面一段机器人语言进行解析:MOVC P002 P003 P004 V010 Z0MOVL P005 V010 Z0MOVC P005 P006 P007 V010 Z0MOVC P007 P006 P005 V010 Z0需要注意的是圆弧运动(MOVC)至少要给出三个点,解释器把这三个点传递给控制模块,控制模块按照圆弧规划的方式进行插补;直线运动(MOVJ)需给出目标点,控制模块根据传感器得出的机器人此刻所处位置信息,根据两点间直线进行插补;采用样条插补(MOCS)时需要说明是使用三次样条、五次样条或B样条方式进行插补。解释器读取机器人语言存入字符串a。Lua分析程序,把每一句指令存入table b[i]。通过string.find()函数查找换行符的位置,然后用string.sub()函数提取中间字符串,从而分割出每一句代码。把每一句代码存入b[i],b为一个table类型。再把b[i]分解成单个关键字存入c[j],c[1]存放指令字符串,c[2],c[3]等存放参数。在此定义了一个存放指令的table cmd[]cmd={MOVJ={“P”, “V”,“Z”,cfunc=cmovj},MOVL={“P”, “V”,“Z”, cfunc=cmovl},……}这里table的使用体现了Lua的灵活之处,用指令直接作为table的索引,使用cmd[c[1]]可以直接索引到相应指令对应的参数和控制函数,进而进行参数检测和函数调用。这个技巧使得逻辑简单清晰,类似数组的索引方式提高了解析效率,并且在进行增加或更改指令等后期维护时,只需在cmd[]中添加或更改就可以了,具有很好的可维护性。用cmd[c[1]][j]匹配参数,检测参数格式是否正确,格式错误时,输出错误类型。在C++代码中使用注册函数Lua_register(L,“lname”,cname),便可以在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模式提供一种新的选择,因此它具有脚本的特点[2]。很多脚本语言都可以实现对Qt的封装,之所以选择Lua是因为Lua的小巧,可以将解释器模块式的嵌入到其他机器人平台中,并且可以方便的进行在线维护和升级。Qtlua中的部分函数介绍:信号与槽——connect signal and slot of given Qt objectsqt.connect(qobject1, “qt_signal_signature ()”, qobject2, “qt_slot_signature()”)——connect slot to given lua functionqt.connect(qobject, “qt_signal_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” ] )button = qt.dialog.msg_critical( “text” [ , “title”, QMessageBox::StandardButtons,QMessageBox::StandardButton ] )button= qt.dialog.msg_information( “text” [ , “title”, QMessageBox::StandardButtons,QMessageBox::StandardButton ] )……Qtlua利用Qt designer可视化的构建界面,用Lua实现具体的功能。这种嵌入式的界面模块可以方便的扩展原有应用程序的功能。编译器可以实现打开、新建、保存程序文件;单步、全速、终止运行等操作。3 实验及结果用自己开发的解释器软件RLI(Robot Language Interpreter)结合vs2008来解析文本,调用控制模块生成数据,利用robotic toolbox for matlab进行仿真验证。在编辑时加入一些不必要的空格和换行、替换控制模 块,以测试解释解析的正确性。大量的测试 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 明,解释器能够正确的解析机器人语言,调用相应函数,执行循环结构,控制机器人执行相应动作等。当机器人程序编写有错误时,可以对其中的错误进行提示。图1中的程序描述了工作流程:机器人从位置点P001移动到位置点P002,然后按照弧线-直线-弧线对工件喷涂,等待工件底座旋转,再次喷涂,反复几次后停止于位置点P007,移动到位置点P008待命。运行仿真结果如图2所示。4 结论通过Lua脚本语言,可以准确、快速的解析机器人语言,可以使机器人语言的编写简单化,使非专业人员也可以对机器人进行编程。Lua脚本语言在机器人中的运用可以实现机器人控制程序的模块化,降低模块间的耦合度,方便实现模块的替换、升级和扩充;可以的大大缩短机器人解释器开发时调试的时间;解释器可以便捷的添加或删除指令,简化了后期的升级维护,实现了解释器的开放性;Lua具有良好的可移植性,根据不同平台修改cmd中的内容后就可以在其他机器人控制平台运行,具有广泛的应用范围。教育期刊
本文档为【基于Lua的工业机器人解释器实现的研究.doc】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_314871
暂无简介~
格式:doc
大小:18KB
软件:Word
页数:5
分类:
上传时间:2018-03-21
浏览量:27