更全的杂志信息网

工业机器人代码解释器的开发*

更新时间:2009-03-28

0 前言

机器人语言系统是工业机器人与用户交流的接口,用户可以借助语言系统以机器人指令编写的方式实现对机器人的控制[1]。机器人语言系统一般包括:机器人编程语言,代码编辑器和代码解释器。

整个语言系统的处理过程为:用户根据自己的意图,按照机器人语言规定的格式编写出机器人指令,经由编辑器输入编辑得到机器人源程序,但通过编辑器输入的机器人源程序并不能直接被机器人后端的运动控制模块所理解,需由代码解释器翻译与数据处理完成从源程序到中间程序的转换,作为后端运动控制模块的输入[3],控制器调用轨迹规划模块进行插补运算,最后送给执行机构去控制工业机器人的动作,如图1所示。

其中代码解释系统连接着机器人语言系统和控制系统,是语言系统最主要的子模块。它的作用是将用户编写的源程序指令翻译成机器人控制系统能够识别的目标指令[2]。本文将以代码解释器为主要任务完成对机器人语言系统的开发。

互联网+和大数据的发展为投资决策而使用的财务报告开辟了新的可能性,根据个人信息的使用要求,出现了不同模式的会计报表,同时会计信息的披露效率大大提高,降低了其滞后性并朝着实时报告发展,甚至个人可以进入各个公司的财务数据库,并选择自己想要的信息,比如沃尔曼在1996年提出的“进入会计”,有效的解决了传统会计信息披露体系中存在的信息披露时间延迟,复杂程度高,投资者不同需求之间的矛盾,包括分类数据和定制财务报告的概念, 分析人员可以获得更多可利用的资源来预测未来的各种风险

  

图1 机器人语言系统结构图Fig.1 Structure of the robot language system

在机器人领域中,通常有专用的机器人编程语言。不同的工业机器人编程语言并不一样,但是基本的功能是必要的。指令代码主要以动作级语言AL语言为主体,并在其基础上进行修改作为工业机器人的编程语言。不仅具有基本的运动指令及运算指令,还拥有与外部传感器交互的输入输出指令,以及改变操作流程的控制指令,同时还具有根据用户需求添加特定指令的功能,实现了很好的开放性。机器人程序格式举例如表1示。

 

表1 机器人编程语言指令格式Tab.1 Examples of Robot Programming Language

  

指令MOVJ PAUSE ADD MOVJ INC参数P2参数VJ=50参数PL=0判断指令UNTIL IF判断条件KI#0==ON KI#4==OFF QI2 P3 QI2 QJ4 PL=2VL=40

1 解释器的运行流程

所开发的解释器系统软件结构如图2所示。

  

图2 解释系统软件结构Fig.2 Structure of the Code Interpreter

本文采用三遍扫描的方式[4]来实现解释器的工作,即各子模块作为独立程序,按步骤依次运行。机器人源程序输入后,调用解释器的词法分析函数检查并转换源程序,输出为规定格式的中间代码1;中间代码1进而输入到语法分析函数,完成对源程序语法结构的检查,并输出中间代码2,记录语句类型信息;然后将中间代码1、2输入到语义分析函数,进行指令内容的检查,通过后将被提取信息到符号表并翻译成最终的目标代码;对中途识别出的非法指令将记录状态并转入相应的错误处理函数[5]

2 词法分析模块的实现

词法分析的主要任务是识别出源程序中的各个单词,把源程序中的字符转换成一种内部形式,遇到识别不出的符号,要进行错误处理。选用的机器人语言包括以下几种单词符号:(1)关键字,如SUB、OFF、IF等;(2)标识符,如QI0、QD2、KI#3、P1等给定变量名;(3)常量,如整形或浮点型;(4)判断符以及位置参数等。词法分析程序除了识别单词外,还输出该单词类型,所以为每一个基本命令字都设置了标号值与属性值[6],部分对应关系如表2。

 

表2 单词符号对照表Tab.2 Intermediate Format 1

  

单词符号MOVJ MOVC ADD KO#2-60 4.55标号值51 53 88 22属性值 标号值 属性值0 0 0 2 6 0单词符号>==P3 QI1位置$32 1 2 3 1 7 8 4.55 1 4 3 1 7 0 3 1 0 3 2

  

图3 分离单词流程图Fig.3 Lexical Analysis Diagram

分析每行代码时,识别单词分为两步:先通过函数Separword()将各单词分离出来;然后调用函数Recogword()负责具体识别每个单词。当识别出单词后,同时需输出并存储单词的标号与属性值,以及所在位置,为此在VC程序中,定义一个类CWordInfor来存储以上信息,该类型具有五个数据成员与两个成员函数。

1.3.7 腹腔引流管的使用 传统组病人均常规使用腹腔引流管,并在术后腹腔引流管<50 ml/d时,予拔出腹腔引流管。ERAS组病人选择性使用腹腔引流管,并且在术后根据病人情况,尽早拔除。

通过对机器人语言规则的研究,可以对每行指令以空格符或判断符为界来划分单词,为此,设计分离单词的流程图,如图3,按照规划好的流程图即可设计分离单词的算法。当单词完成分离之后即可由Recogword()函数进行识别工作,单词识别后,输出单词的同时建立CWordInfor类的对象,保存对应单词的标号值与属性值等相关信息用于后续的语法分析处理。对于无法识别的单词将进行特殊赋值,并转入错误处理。

3 语法分析模块的实现

语法分析的任务是将输入的单词流进行组合,按照特定的语法规则去分析源程序的语法结构并检查语法错误,当发生错误时输出相应的错误信息,检查无误则输出合法语句[7]

  

图4 语法分析流程图Fig.4 Syntax Analysis Diagram

本文采用的机器人语言指令结构比较固定,所以可以采用将单词的标号值与规范的标号值相匹配的方法进行语法分析。首先建立规范指令的数字串集合,称为序列号表。将语法结构正确的指令中所有的单词标号值连成数字串,作为序列号存入序列号表中;当处理一行指令时,将指令中所有单词的标号值提取并连为数字串,通过matc_nu1()函数与序列号表中的序列号进行查询,查询到相同的数字串则表明匹配成功。若匹配成功,则代表语法结构正确;若失败,则对该行指令进行错误处理。例如“MOVJ P2 VJ=50 PL=0”这条指令中所有单词按顺序组合出的序列号为“51359266026”,分析首单词“MOVJ”的标号值为51,则进入MOVJ指令的序列号表进行匹配查询。对应序列号表为:{"51359286026","51359266026","51360265926", "51360265928", "5135926", "5135928"},根据查询对比,与表中第二项序列号匹配,证明该行指令语法格式正确。可进行中间代码2的生成,进入语义分析模块的处理。语法分析模块流程如图4所示。

4 语义分析与中间代码生成模块

}Traj_joint_move;

语义分析的方法主要依照编译原理中的语法制导翻译的思想。即对每一种指令类型都编制其各自的语义子程序,其中包括语义检查模块和目标代码生成模块。当用语法分析匹配出一条指令时,立即调用相应的语义子程序进行处理[9]。基本流程如图5所示。

2.2.2 构建征集模式,开辟捐赠渠道。许多红色文献是非正式出版物,零散地分布在民间,为有效采集红色文献资料,可同时采用订购、捐赠、交换、复制等多种方式,逐步完善该地区红色文献保障体系。

{

typedef struct Traj_linear_move

{

int type; //命令类型

  

图5 语义分析流程图Fig.5 Semantic Analysis Diagram

EEPose end; //目标点

对运算指令ADD、SUB、MUL、DIV等,其数据结构定义为:

double maxvel;//速度

int feed_mode; //平滑度

夏冰折回去,向出门右手方向前行。在花木丛中走了几步,便看到一处单独的两层小楼,小楼被大树环抱,极不显眼。再往前走,是一片花园,头顶是一条空中走廊,走廊的尽头搭在高高的围墙上,那里有一座平台,平台上隐隐有灯光。

语法分析是检查句子的结构,语义分析则是检查句子的意思。因此语义分析的任务为对源程序中每行指令的具体意思进行剖析,检查指令中的静态语义错误。若同时满足语法层面的“形式”正确和语义层面上的“内容”正确,则指令无误,可翻译成等效的中间代码。因此在语义分析和中间代码生成阶段,解释系统要做的工作是进行静态语义检查和翻译[8]

《卜算子》为双调小令,句式整饬。因缺乏长调慢词式的铺叙式的表情达意,词体格式、字数有限,所以作者为防在追求重复表达的同时给读者造成视觉上的审美疲劳,便在词调的谋篇布局上别出心裁,另辟蹊径。

随着现代医疗的迅猛发展,医院在内外环境等方面已发生了极大改变,而相关制度的发展与现实发展的实际相脱节的现象也时有发生。在医院的财务内部控制管理中,在管理工作上不严谨,财务预算管理浮于表面、流于形式,最终导致在会计核算时发生严重的问题。对此,医院的职能部门负有不可推卸的领导责任。然而,这些部门责权分工不明确,相互约束和监督的力度非常松懈,这就给管理工作带来了许多的隐患和漏洞,严重影响了医院内部的控制制度及效果。

typedef struct Cal_asmd

{

int type; //命令类型

int caltype;//运算符类型

Vari var1;//操作数:变量1

经过解释系统后生成的中间代码如图7所示。

通过在空气导流板的导流装置内侧增加仿形辅助阴极板,消除了导流装置因自身的多曲率外型而在阳极氧化和电解着色过程中产生的电流尖端效应,实现了内腔连续、稳定的阳极氧化和电解着色生产。所制备的氧化膜厚度均匀,电解着色后颜色也均匀,并具有较高的发射率。

}Cal_asmd;

其中Vari作为变量类型,用于表示指令中各变量,包括整形变量QIn、浮点型变量QDn、布尔型变量QBn,以及IO接口KI#(n)、KO#(n)等。定义的数据结构为:

typedef struct Vari

由于在前面词法分析模块中,将每个单词的类型与属性值等各项信息已提取为类CWordInfor的对象,作为中间代码1;又经过语法分析模块,识别出每行指令的种类等信息,并保存在类CWordInfor的对象中,作为中间代码2。因此可将中间代码1与中间代码2作为语义分析模块的输入,根据中间代码2中指令类型及其参数信息,调用相应的语义动作:通过该指令的静态语义检查模块对中间代码1中信息进行查错与变量表的填充,然后通过翻译子程序模块对中间代码1进行信息的提取[10],完成中间代码的输出。语义分析检查无误后,进入翻译模块,需要对当前指令进行信息的提取,以生成中间代码,在这里采用对每种指令类型创建一种数据结构的形式,指令的参数作为数据结构的成员,定义在头文件Struct.h中。例如对运动指令MOVJ,其数据结构定义为:

int vtype;//变量类型

union{

int num; //变量标号

double value;//常量数值

}vdata;

}Vari;

将各行指令创建为相应的数据结构对象后,即可将其提取在消息列表中,定义在头文件Struct.h中的消息列表的数据结构为:

struct CODE_INTERP_LIST_MSG

可以证明,本文开发的代码解释器可以准确地将机器人指令翻译输出为规定的中间代码。代码执行过程中,当用户给定的机器人运行轨迹为连续直线形移动时,有的目标点并不需要精确移动到,此时为使机器人平稳运行,可以采用贝塞尔曲线路径对原始路径在目标点处进行平滑拟合,降低机构的冲击。因此连续型轨迹可规划为精确定位的插补和轨迹逼近的插补。

int line_number;//指令行号

从各部件的应力图及其表1中的数据看出,对于推力杆头和销轴在受力一端处相较于约束一端应力值较大,而对于橡胶套来说则相反,其最大的应力出现在约束一端处,橡胶套的最大应力相对于其他部件小了两个数量级,不易造成失效。推力杆头的最大应力值是360 MPa,销轴的最大应力为225 MPa,大于推杆的材质45号钢的许用应力180 MPa,使用过程中可能最先发生失效,这一分析结果与实际故障位置是吻合的。

int cmd_type; //命令类型

union{ //各指令对应的数据结构

Traj_circular_move tcmd;

Traj_linear_move tlmd;

IF_Condition ic;

Traj_joint_move tjm;

Ctl_begin cb;

……

}cmd_data;

};

随着网络技术的发展,DGIWG也转换思路,改变了数据和信息的定义方式,从信息内容模型的角度来定义信息,即通过交换格式或应用接口来实现数据的交换,但为了实现数据的向下兼容,仍然保留了DIGEST系列标准。这在一定程度上可以说是DGIWG的标准体系和标准顶层设计。此外,DGIWG还建立了标准网站,为其成员国和合作伙伴搜索、交换地理空间信息标准及其使用情况提供平台。今后,DGIWG还将编写相关的文献资料,指导成员国采纳和使用其制定的各相关标准。

其中数据成员line_number表示当前指令所在行的位置,cmd_type表示所存储的指令类型,联合体cmd_data则用于存储当前指令的数据结构对象。这样,创建的消息列表即为当前行生成的中间代码。

无论在工科院校还是农业院校,“食品添加剂”都是食品类专业重要的专业课程。它在培养食品从业者对食品添加剂的科学宣传、规范生产、实际使用等方面起着不可替代的作用。与其他专业课程相比,“食品添加剂”教学体系较复杂,课程内容涉及食品化学、食品微生物、食品检测分析、食品营养学、食品毒理学等多方面专业知识[3],集应用性、实践性和技术性于一体。同时,由于食品添加剂行业的发展日新月异,国际合作日益紧密[4],这使得“食品添加剂”的教学内容不能年年“吃老本”。“食品添加剂”需要专业教师具备很强的教学技巧、与时俱进的学习心态和宽阔的国际视野。

5 实例测试

进行解释系统的实例测试,通过在基于MFC开发的程序编辑器中编写机器人的运动测试指令,经过代码解释器最终生成中间代码以验证机器人语言系统尤其是代码解释系统的正确性。测试指令在程序编辑器中输入如图6所示。

  

图6 测试指令输入Fig.6 The Testing Code

Vari var2;//操作数:变量2

{

于2016年6月26日(1-9号)和7月14日(10-16号)测定的绿棚、黑棚、对照的光照、温度、湿度数据见表1,图1~图3。

吸附过程从本质上说是一个浓缩富集工艺。吸附、脱附是依靠吸附剂的物理和化学吸附作用,把废气中的有机物吸附下来,从而达到净化废气的目的。吸附剂进行吸附只是把有机物吸附下来,并没有把有机物真正转化为无害的物质,并且吸附到一定程度会达到饱和,所以通常必须进行脱附再生。脱附的方法有饱和蒸汽脱附溶剂回收法、热空气脱附溶剂回收法和催化燃烧热空气脱附法。

  

图7 目标代码输出结果Fig.7 The Object Code

这在机器人运动指令中体现为位置精度等级的选取,即在指令MOVL的参数中,PL的值代表过渡路径的平滑度,PL设定值越大,则过渡曲线越平缓,但接近原始路径的程度越低。当PL设为0时,机器人将按规划路径精确移动而不进行过渡曲线的拟合。对于精度的划分,如图8所示,过渡点Q1与Q2的选取遵循λ∈[0,1]的规则,其中λ作为精度系数,取值大小直接影响过渡。精度等级对照如表3所示。

 

表3 精度等级对照表Tab.3 Precision control table

  

位置等级PL 位置等级PL 0 1 2精度系数λ 0 0.02 0.05 3 4精度系数λ 0.1 0.25

插补器采用了直线段的五次方多项式轨迹插补函数,四阶贝塞尔曲线路径平滑函数及曲线段的五次多项式轨迹插补函数。在插补器中经轨迹插补后的路径点拟合如图9所示。

  

图9 路径点插值结果Fig.9 The results of path interpolation

6 结论

  

图8 位置等级规划Fig.8 Position Levels

本文在工程需求分析的基础上,以Delta机器人为工作平台,重点开发了机器人软件模块中的语言系统的解释模块。选用AL机器人语言并扩充作为用户输入语言,基于MFC设计了机器人程序编辑器,并基于C语言重点开发了机器人代码解释系统,通过三次扫描依次调用词法分析程序、语法分析程序、语义分析及中间代码生成程序以完成源指令到目标指令的翻译。经指令测试,验证了各模块运行的正确性。

该技术主要利用建筑物承重柱的重力作为反力,通过自重装置将静力压桩预制桩分节压入土中,改变土壤中颗粒的结构、组成、缝隙,以加固建筑地基。应用静压力桩加固技术应控制好压桩的压力与液压,当压力达到最大值或者基本满足工程需求时终桩,并应仪表等设备对单桩承载力进行检测,做好终桩的后续作业,注意施工安全。在终桩结束后,将压入桩的端头钢筋与原基础钢筋连接,使浇筑砼承台与基础形成一体,从而使上层结构荷载借助桩的力量直接传递到坚硬的土层中,进一步加固建筑地基。

参考文献:

[1]彭慧,尹朝万.机器人语言研究[J].机器人,1991,13(5):36-41.

[2]张玮光.面向复杂作业的微操作机器人编程语言[D].天津:南开大学,2008.

[3]黄永华.机器人语言编程系统的设计与实现[D].南京:东南大学,2004.

[4]王浩,谢存禧.工业机器人解释器的研究[J].机械设计与制造,2010(3):160-161.

[5]郭显金.工业机器人编程语言的设计与实现[D].武汉:华中科技大学,2013.

[6]别卫春,朱志红,叶伯生,等.HNC-IR机器人语言解释系统的研究与实践[J].机电一体化,2000,6(3):27-30.

[7]王侦,马旭东.工业机器人语言解释器的设计与实现[J].工业控制计算机,2015,28(3):6-8.

[8]伍春香.编译原理[M].北京:清华大学出版社,2001.

[9]熊巍.机器人编程语言解释器的研究与开发[D].北京:北京工业大学,2005.

[10]LOUDEN KENNETH C.编译原理及实践(计算机科学丛书)[M].北京:机械工业出版社,2011.

 
杨晓钧,井孟凯,李朋,周绍帆
《机电工程技术》 2018年第04期
《机电工程技术》2018年第04期文献

服务严谨可靠 7×14小时在线支持 支持宝特邀商家 不满意退款

本站非杂志社官网,上千家国家级期刊、省级期刊、北大核心、南大核心、专业的职称论文发表网站。
职称论文发表、杂志论文发表、期刊征稿、期刊投稿,论文发表指导正规机构。是您首选最可靠,最快速的期刊论文发表网站。
免责声明:本网站部分资源、信息来源于网络,完全免费共享,仅供学习和研究使用,版权和著作权归原作者所有
如有不愿意被转载的情况,请通知我们删除已转载的信息