机器人编程

2024-09-15

机器人编程(共9篇)

机器人编程 篇1

摘要:机器人图形化编程系统是用于无锡职业技术学院教育机器人系列产品的软件开发系统。它所具有的基于流程图的编程环境为开发教育机器人项目, 编写机器人控制程序, 和进行机器人教学提供了简单而又功能强大的平台。

关键词:机器人图形化编程系统,教育机器人,基于流程图

RobotDev1.0机器人图形化编程系统具有基于流程图的编程环境, 并支持基于PICC语言的Robot C机器人控制语言。用户不仅可以用直观的流程图编写机器人控制程序, 也可以用Robot C语言编写更复杂的机器人控制程序, 充分发挥自身的想象力和创造力。

该系统操作简单, 有活泼明快的图案和简短的文字说明, 用户点击RobotDev1.0机器人专用的功能或控制模块中的功能图标搭建流程图。搭建流程图的同时, 动态生成无语法错误的Robot C程序。流程图搭建完毕后, 再进行图形化编译, 编译后产生相应的Robot C机器人控制程序, 再对Robot C机器人控制程序进行编译连接后, 就可通过上下位机通信将程序下载到机器人控制器中。用户也可以在Robot C代码编辑环境中对生成的Robot C程序进行进一步编辑和修改。

1 功能简述

该机器人图形化编程系统的主要功能由功能模块库和控制模块库提供。功能模块库提供机器人前进, 后退, 左转, 右转, 输出, 延时功能;控制模块库提供无限循环, 条件判断, 多次循环, 跳出循环功能。

通过图形化方法调用这两个模块库内的功能可动态生成流程图, 生成后的流程图通过图形编译可生成Robot C语言;也可使用Robot C语言通过函数调用的方式使用两个模块库所提供的功能。Robot C语言编译连接成功后, 生成可供机器人控制器执行的二进制代码。最后将二进制代码通过上下位机通信程序写入机器人体内的PIC单片机, 这样用户就可以通过自行编制的程序来控制机器人的运行了。

该系统界面如图1所示:

图1上的1区为模块区, 由功能模块和控制模块构成, 两者提供流程图编程所需的的基本功能和控制功能, 用户可以通过选择不同的图标来实现不同功能的选择。

图1上的2区为图形化编程区, 选择1区的图标后, 点击2区流程图上的红色感应点即可动态插入新的功能, 如此反复, 流程图被不断扩展。

图1上的3区为字符编程区, 高级用户可以直接在该区使用Robot C语言进行字符编程。除此之外, 2 区的流程图经图形化编译后产生的Robot C代码也会在该区显示, 用户也可以在此基础上对代码进行编辑和修改。

图1上的4区为出错提示区, 高级用户在3区编写完程序后进行编译连接, 如果在此过程有错误或警告, 那对应的错误或警告信息会在4区显示出来, 以供用户调试和排错。

2 开发概要

该系统采用Visual C++6.0作为主要开发工具, 整个开发计划主要分为如下四个阶段:

第一阶段:RobotDev1.0软件框架的建立。

该阶段通过使用MFC提供的SDI架构, 基本通用控件和菜单定制功能, 并加上自定义控件 (如选项卡控件) , 建立起RobotDev1.0的整个软件框架 (偏重于界面的构建) 。

该阶段又细分为如下五个子阶段:

a.MFC基本技术和若干高级技术强化理解;

b.SDI应用程序的创建;

c.可浮动工具条界面布局;

d.加载自定义选项卡和CEdit控件;

e.定制菜单。

第二阶段:使用PICC编译器编译Robot C程序。

该阶段通过调用PICC ME 16编译器来编译机器人可理解的Robot C程序, 编译成的二进制代码能在基于PIC16F877单片机的机器人控制器上运行。在编译器调用技术中, 主要通过创建一个中介程序RobotSpawn来将基于控制台的编译程序同基于GUI的RobotDev1.0进行连接, 通过RobotSpawn和RobotDev1.0创建的管道进行编译信息的传递。

该阶段又细分为如下三个子阶段:

a.了解PICC编译器的帮助文档和各种编译方式;

b.编写中介程序Robot Spawn;

c.使用管道通信调用PICC编译器。

第三阶段:构建流程图编程环境。

该阶段首先实现功能模块中提供的所有功能, 对流程图中所有图形对象采用面向对象的方法进行类设计。设计出一种便于流程图动态创建的数据结构后接着分析流程图的动态生成算法。最后还要允许用户使用串行化的方法对流程图进行保存。

该阶段又细分为如下三个子阶段:

a.流程图数据结构和图形对象的设计;

b.流程图的动态实现和Serialize;

c.功能模块的实现;

d.控制模块的实现。

第四阶段:与机器人进行上下位机通信。

该阶段首先确定上位机通讯协议, 包括上位机发送数据的格式, 校验方式, 数据处理, 波特率的确定等。最后使用Remon Spekreijse免费提供的串口类实现上下位机的通信。

该阶段又细分为如下两个子阶段:

a.确定上位机通讯协议;

b.实现串口通信。

3 软件架构设计

根据面向对象的程序设计方法, 整个机器人图形化编程系统被划分为不同的类, 主要的类以及其对应的功能如表1所示:

新元素产生后, 新元素的数据结构被插入到流程图的数据结构中, 根据新的数据结构CRobotDevView负责重新显示整张流程图, 用户立即可以看到扩展后的流程图。

当用户完成流程图编程后, 为了实现用该流程图来控制机器人的目的, 首先要对流程图进行图形化编译生成Robot C代码。通过选择RobotDev1.0软件的工具菜单下的图形编译功能, CFlowGraph类的CodeTraverse方法就会被调用, 该方法将负责把流程图翻译成Robot C代码并显示在3区中。

图形编译后进行Robot C代码的编译和连接, 产生出可供PIC单片机执行的二进制程序。最后选择工具菜单下的代码注入功能调用CSerialPort类的SendToPort () 方法把二进制程序传入到机器人体内的控制器中, 这样机器人就可以按照用户的编程意愿进行运转了。

4 结论

本文介绍了无锡职业技术学院教育机器人系列产品的RobotDev1.0软件开发系统的开发过程, 对该软件所具有的功能进行了扼要的描述, 根据功能分析, 分阶段介绍了RobotDev1.0的概要开发计划, 并根据面向对象的程序设计方法列举了在本软件架构设计中所设计的主要类及其相应功能, 最后描述了这些类是如何相互协作以达到用户从图形化编程到最终控制机器人运行的整个过程。

参考文献

[1]侯俊杰.深入浅出MFC[M].武汉:华中科技大学出版社, 2001, 1.

[2]龚建伟, 熊光明.Visual C++/Turbo C串口通信编程实践[M].北京:电子工业出版社, 2004, 10.

机器人编程 篇2

浅谈FLL竞赛机器人的搭建及编程

字数:

作者: 单位:泰州技师学院地址:江苏省泰州市龙轩路邮编:3412字

周洋

9号 225300

2016江苏省计算机教学年会

浅谈FLL竞赛机器人的搭建及编程

摘要:在FLL机器人竞赛中,基础小车的搭建是完成任务的基础,完成任务的准确性和稳定性有很大一部分因素取决于基础小车的搭建,本文从驱动轮、从动轮、重心、传感器、电机等几个方面来探讨基础小车的搭建问题以及阐述了在比赛中常用PID巡线技术。

关键词:FLL、机器人、传感器、搭建、PID、巡线

近十年,机器人竞赛越来越普及,种类也非常繁多,这些比赛对促进青少年的发现问题、解决问题的能力有着很大的提升作用,与当前所倡导的素质教育不谋而合。许多大学目前也开设了机器人专业,家长的教育理念也有所更新,机器人教育也符合孩子们的天性,种种原因都使得机器人教育和机器人比赛蓬勃发展,一片欣欣向荣。其中FLL比赛是较为复杂,对青少年的能力考验要求比较高的一项比赛,在该项赛事中,机器人的结构搭建又是完成比赛中各项任务的基础,本人近几年多次指导学生参加江苏省青少年机器人大赛获得一等奖,现将一些搭建和编程的经验与大家分享,希望对参赛者能有所帮助。

一、驱动轮和从动轮的要求

乐高器材中可以用作驱动轮的轮子很多,有大、有小、有宽、有窄,在比赛中很多参赛队都各有采用。这些轮子在走直线时是没有什么误差的,主要的误差来自于拐弯,太宽的轮子由于场地不是绝对平整的,在拐弯的时候的中心点就没法确认,导致拐弯的误差较大,所以应选用较窄的轮子误差较小。直径大的轮子可以实现较快的速度,但同时惯性较大引起误差;直径较小的轮子速度较慢,但误差较小。轮胎与周围结构件的距离要空开2毫米以上的距离,防止轮胎与结构件摩擦引起误差。

2016江苏省计算机教学年会

从动轮不宜选择万向轮,因为万向轮的在结构上不够稳定,会引起转向的误差,可以选择转动灵活的普通轮毂在作为从动轮。通常两动力轮之间的距离在15~18厘米左右,动力轮与从动轮的前后轴距在14~20厘米左右。

二、车体重心的要求

在垂直方向,为了车体的稳定,整机的重心应该尽量靠下,在乐高所有的器件中控制器(包括电池)和电机的重量是比较大的,所以这些零件应该装在较低的位置。在水平方向,整机的重心应该离驱动轮较近,离从动轮较远,两者的距离大约为1:2。如果重心离驱动轮较远,那么驱动轮就有可能会打滑,引起比较大的误差;如果重心离驱动轮太近甚至就落在驱动轮上,那么在行进的过程的惯性就会引起车辆的点头和抬头,从而引起误差。

三、传感器的使用

乐高提供的传感器种类很多,但能够在FLL比赛中发挥作用的却很少。光电(颜色)传感器在比赛中使用频率较高而且是必不可少一个传感器,可以用单光电来巡线定位,常用的定位算法是PID算法,但在实际比赛中往往只要用到P算法就可以达到要求。可以用双光电来进行垂直定位,在车辆的左右水平位置各安装一个光电传感器,左侧的传感器控制左轮,右侧的传感器控制右轮,左侧的传感器检测到黑线左轮就后退,检测到白色左轮就前进,右侧也是一样,这样就可以达到与黑线垂直对齐的目的。可以用单光电光电巡线+光电定位,一个光电传感器负责巡线,另一个光电传感器负责检测旁边垂直的黑线,一但检测到黑线,机器就可以进行下一步动作,例如停下来完成任务等。

角度传感器也使用得比较多。它是集成在电机内部的,用来反馈

2016江苏省计算机教学年会

电机旋转的角度,是非常重要的控制电机的手段。

超声波传感器可以用在对精度要求不是很高的任务上,因为小车前进的速度和超声波本身都会对距离的判断带来误差,使用的距离也应该控制在4~12厘米左右,太近或太远都会有较大的误差。

触碰传感器可以用在启动机器和靠墙对齐时使用。可以利用按一下触碰传感器来启动机器或是在比赛过程中再次启动机器。靠墙对齐就要求在机器的最后面的水平对称位置安装两个触碰传感器,一但两个传感器同时被按下就说明对齐成功,可以进行下一步动作。

至于陀螺仪、声音传感器、温度传感器在FLL比赛中都不适合使用。

四、车身形状的要求

首先整个车体的结构要非常稳固和结实,不能再比赛中有零件松脱的现象。结构不稳固会在行进中引起跟距离成正比的误差。如有零件松脱了,裁判会进行判罚。第二,车辆的前后左右最好使用圆弧或倒角的结构,不要使用直角,这样在车体拐弯的时候可以减少碰到模型或墙壁的概率。第三,车体后面做成一个平面或在左右两边做出两个凸起,用来进行靠墙对齐。第四,如果需要安装导向轮,那导向轮的位置一定要在驱动轮的前面,不要超过墙壁的高度。第五,车辆的四周要平滑,要留下固定点。这样就可以方便地安装和拆除策略物。

五、控制器和连接线的要求

控制器最好是横放在车辆上,否则重心不太容易控制。控制器的下载口的空间要预留出来,否则无法下载程序。控制器要方便拆卸,这样可以方便更换电池和充电。连接线要尽量藏到车辆里面去,千万不能鼓在旁边,更不能碰到传动部件,这样会严重影响任务的执行。

六、电机的选择要求

2016江苏省计算机教学年会

目前主流的电机主要是NXT电机和EV3电机,在实际使用中EV3电机在启动时的误差要比NXT电机要大,所以我们通常使用NXT电机。电机要挑选两个最为接近的电机,在挑选时可用一根轴连接两个电机,然后让两个电机同时转动,在启动时比较平顺,没有跳动的即可作为一对电机来使用。

七、巡线算法

巡线是FLL竞赛中一项非常重要的支撑技能。有了它机器人就能在场地上准确定位,完成任务;有了它机器人就能充分利用场地上的线路,提高速度和准确性。在一般的教材中提到的往往是由传感器判断黑白位置,控制器控制左右轮交替前进的方式,该方式车体摆动较大,定位的精度不够,所以在比赛中失误较多。为了能够达到比赛精度,我们往往采用的是PID算法巡线。

1、PID巡线的P算法

有了稳定的好的车体,下面就欠缺好的算法了。机器人在巡线的时候巡的是黑白的交界线,用我们的肉眼看这条分界线是黑白分明,黑色的光线暗而白色的光线亮。实际上光线不论从暗到明还是从明到暗都不是跳跃的而是线型变化的。我们利用这个线型的变化值来确定机器人的位置,来确定驱动轮电机的功率,从而修正位置。

通常我们用于驱动的电机都习惯是B和C(因为程序默认B和C),依照前进的方向,左侧的为B电机,右侧的为C电机。假定黑色路线的平均光线值为5,白色部分的光线值为55,那么平均值30我们就可以看成是黑白分界线的值,换句话说就是传感器测出的值为30,那么我们就确定传感器的位置在分界线上,值越小就越靠近黑线里面,值越大离黑线就越远。我们以巡右侧的分界线为例来说明一下算法。首先由传感器测出当前的光线值,然后用平均值减去当前光线值,若

2016江苏省计算机教学年会

差是正值则说明偏黑线部分,这时B电机应该功率大,C电机应该功率小甚至是负值。用该差值乘以一个0到1的系数(该系数由光电跟驱动轮的距离和驱动轮的大小决定),得到一个新数值,用该新数值加上一个基础功率(该功率越大前进越快,车辆越不稳定,反之亦然)就得到B电机的功率;用基础功率减去该新数值就得到C电机的功率,这样就实现了调整机器人位置的目的。这里的关键就是根据需要找好系数和基础功率,这两个值直接决定了巡线的速度和稳定性,而这两点往往是矛盾的,所以要找好平衡点。

2、PID巡线的I算法

以上的P算法对于一些比较平滑的线路已经能够做到比较好的巡线精度了,但对于弯曲度比较大的曲线或是急拐弯就显得不够了,那就要加入I算法。每次计算出当前光线值和平均值的误差后,将这个误差存到一个变量中,那么就会出现这样一个公式:变量=变量+误差,如果线路比较平滑,那么误差有正、有负,所以大部分的误差是可以抵消的,变量趋近于零。但对于曲度较大的线路,引入该算法后就可以修正误差,我们最终希望变量趋近于零,得到较为平顺的行进线路。具体做法是我们将累累积的误差,也就是这个变量加到B和C电机的基础功率里,还是以巡右侧线为例,基础功率加上变量赋给B电机;基础功率减去变量赋给C电机即可。

3、PID巡线的D算法

前面的P算法用于修正当前的误差;算法用于修正累积的过去的误差。D算法就是用于预测未来的误差给予修正。假定误差的下一个变化与当前最后一个变化是相同的,我们据此来预测将来。这个意思是说,下一个误差的期望值是:修正量=当前误差+前两次传感器采样误差的变化量。

2016江苏省计算机教学年会

以上是在近几年的比赛中对于基础小车搭建的一些心得和FLL比赛中使用的PID算法的基本原理,希望对大家能有所帮助。

机器人编程 篇3

关键词:Java;Robocode;实践教学

中图分类号:TP312.1-4 文献标识码:A文章编号:1007-9599 (2011) 07-0000-01

Robocode Robot Programming Applied to the Practice Research of Java Teaching

Wang Xin

(Liaodong College,Institute of Information Technology,Dandong118003,China)

Abstract:In this paper,with practical teaching experience,proposed Robocode robot game programming into Java in order to improve teaching and learning activities in the course of the actual practice of teaching quality and student ability.

Keywords:Java;Robocode;practice teaching

一、Robocode简介

Robocode是2001年在IBM的Web alphaWorks上发布的坦克机器人战斗仿真引擎,是作者Mat Nelson用Java语言创造的一款专为Java程序员设计的游戏半成品。与通常的游戏不同的是参赛者必须利用Java语言对机器人进行编程,给机器人设计智能来自动指挥它,而不是由键盘、鼠标简单地直接控制。

Robocode的出现,给枯燥的Java编程学习注入了动力与激情,可以让学生在娱乐的同时学习和提高Java编程能力。Robocode已经开始成为学习Java语言的非常好的辅助软件。

二、将Robocode 应用到Java实践教学

将Robocode机器人编程与Java教学紧密结合起来,不仅要提高学生的学习热情,更要让学生在编写游戏过程中掌握教学大纲的知识要点,以求达到良好的教学效果。因此需要教师认真研究Robocode机器人编程的原理和体系结构并进行实际的编程实践,充分理解该游戏架构及掌握基本操作技能,在此基础上遵照Java教学大纲的要求对主要的知识点进行归纳总结,将总结后的知识点组织成有相互关联关系的模块,最后用Robocode机器人编程方式来讲解各模块知识点。

三、Robocode实践教学体系构成

(一)JDK及Robocode的安装与配置

该环节主要是让学生掌握JDK及Robocode开发环境的安装与配置方法,这是后序教学活动的基础。在该环节重点让学生掌握JDK常用环境变量的配置方法,掌握Robocode自带的程序编辑器Robot Editor的基本使用方法,可以让学生运行Robocode系统自带的演示程序,让学生熟悉Robocode编程环境,同时引起学生的学习兴趣,为后面的教学打下良好的学习基础。

(二)基本数据类型及控制语句的使用

Robocode机器人编程基础需要能够熟练使用坐标系,因为坐标系主要采用整数等基本类型表示,因此可以在此环节让学生在使用坐标系的过程中掌握Java基本数据类型的知识。在利用坐标系移动机器人过程中需要进行各种判断及循环操作,因此可以让学生通过实践掌握控制语句的基本使用方法。

(三)类与对象的基本使用

由于学生是初次学习Java课程,因此不可能自己用Java语言实现一个完整的机器人,这就需要利用系统提供的现成机器人基础上创造自己的机器人,同时为了便于管理需要为机器人进行分类,这样就可以在此环节让学生掌握继承、封装、多态等面向对象程序设计思想及包管理机制。

(四)类与对象的高级应用

在此环节逐步使用Robocode系统提供的更加复杂的机器人模板构造自己的机器人,在使用过程中可以指导学生利用内部类方式保存例如敌方机器人数据方法来掌握类与对象的一些高级应用知识。

(五)多线程应用

Robocode系统提供两种机器人模板,一种是线程阻塞式的,一种是非阻塞式的,在让学生分别实现这两类机器人过程中总结它们各自的特点,区分它们的不同,从而熟悉多线程机制及其具体应用。多线程应用历来是Java语言学习过程中的难点,在这里通过学习别人的优秀案例来掌握多线程的使用不仅让学生在学习过程中少走弯路,也能让学生学习到优秀的设计思想及技巧。

(六)事件的应用

机器人在移动过程中应能通过雷达判断自己及敌方机器人的位置,而移动过程中每一个动作都是通过事件来触发的,因此在该环节应让学生能够利用事件机制触发机器人各种动作,从而掌握Java语言的事件处理机制,而事件处理机制是所有窗口应用编程的基础。

(七)算法应用

该环节是高级应用环节,一个程序的灵魂在于算法,因此要想让学生提高自己的编程能力必须加强算法实践的训练。在该环节可以先让学生应用已有的模式匹配算法到自己的机器人中,在学生慢慢理解算法的重要性及掌握算法的应用方法后,可以让学生自己去搜集资料学习一些人工智能方面的知识,能力强的同学还可以创造自己的算法并应用到实际机器人编程中。通过这种实践方式来循序渐进地学习算法知识。

机器人编程 篇4

由于单一传感器信号难以保证输入信息的准确性和可靠性,不能满足机器人系统获取环境信息及系统决策能力。而多传感器信息技术是通过多传感器信息的综合判断处理,获得对环境的正确理解,使机器人系统具有容错性,保证系统信息的快速性和正确性,其可靠度高于单个传感器所能达到的目标,因此多传感器信息技术不失为智能移动机器人行为控制最优策略。

本文主要研究的是将触觉和红外传感器信息进行综合判断处理,建立行为控制策略,从而编程实现控制机器人行为能力的方法和手段。

一、行为控制策略

人们在工作和生活中往往要处理各种事务,这些事务有轻重缓急之分,时间紧、迫在眉睫的事情要先处理。它们的优先级要高,等这些事情处理完之后再处理其他事情,其他事情中也是先处理优先级高的。如果一样重要,就按时间的先后顺序完成。

在智能机器人里,引入了两个传感器即触觉(feel)和红外(IR)。那么它们的优先级谁高谁低呢?你不妨想象一下:你是先处理手头上,近在眼前的事情,还是处理等会要做的事情?同理,触觉和红外同时检测到了障碍,机器人应该怎样做?触觉检测到的障碍物近在眼前,红外检测到的障碍物还有一定的距离。理所当然先处理触觉事件,所以触觉的优先级要比红外的优先级要高。两个传感器检测区域示意图如图1-1所示。触觉传感器检测区域为A和B,检测距离虽然短,但优先级比红外传感器高。红外传感器检测区域为C和D,呈喇叭形发散,检测距离远,范围厂;区域E为两者共同检测区;F和G分别为两者的盲区。

根据传感器的优先级,可以方便地制作机器人行为控制策略。左右触觉状态分别由P2_3和P1_4获得;左右红外检测器状态由Pl_2和P3_5获得。假如这四个状态值分别是某一变量的高低四位,则根据这一变量的值就可判断机器人的状态,并做出相应行为策略,见表1-1

二、编程实现

1.流程图设计

2.程序设计如下:

因篇幅关系,本文程序段中省略了相关头文件代码。

程序使用四个变量a、b、c和d来保存左右触角及左右红外传感器的值:

a=P2_3state();//左触觉状态

b=P1_4state();//右触觉状态

c=irDetectLeft;//左红外传感器状态

d=irDetectRight;//右红外传感器状态

将这四个值组成一个新的机器人状态变量state:

Sate=2*2*2*a+2*2*b+2*C+d;

其中,左触觉状态a为最高位(第4位),右触觉状态b为第3位,左右红外传感器。和d状态分别为第2位和最低位。

用switch分支选择语句来实现机器人的行为控制时,程序如何体现触觉的高优先级呢?

首先回顾一下switch语句的结构:

switch是根据“表达式”的值是否与“常量表达式”的值相等来工作的,假如“表达式”

与“常量表达n-l”相等,而后面又没有提供“语句n-l”且没使用break跳出选择,则执行

下个case,即“语句n”。

例如,当state值为0、1或2时,由于case为O、1或2时后面均没有语句,则执行case

为3后面的语句,对应的实际情况是,当两边触觉均检测到障碍物时(case=3),不管有无

红外传感器信息(case=O、1、2),均执行后退再左楞两次动作。其余情况与此类似。

在智能机器人导航中,需要判断多个传感器信息,如果再用if语句,则程序显得冗长。而用switch语句,则可简化程序。

三、结束语

随着计算机技术和传感技术的发展,传感器信息技术在智能移动机器人上获得了广泛的应用。基于多传感器信息的智能移动机器人行为控制策略是其中的关键技术和最佳手段。

参考文献

[1]孔凡天,陈幼平.基于多传感器信息融合的移动机器人导航系统[J].计算机工程与应用2005.32.

机器人编程 篇5

关键词:机器人,离线编程,软件系统

0 引言

随着我国工业现代化水平的逐步提高,工业机器人已经成为制造业不可或缺的生产工具,它标志着工业现代化的程度[1,2]。机器人技术集成了多个学科领域的技术,包括自动控制、材料科学、机械工程、人工智能等。随着相关技术的不断发展,以及制造过程中对机器人的依赖越来越大,机器人技术迎来了巨大的发展机遇。工业机器人通常由多个关节组成,可对机器人运动进行编程,从而完成复杂的动作。随着现代工业对工作效率和人力成本的要求越来越高,机器人的作用越来越无可取代。由于机器人的动作需求越来越复杂,能够快速、合理、有效地进行机器人编程显得尤为重要[3]。

对于工业机器人,最为常见的程序编制方式有示教编程和离线编程2种。示教编程是由人工导引机器人末端执行器来使机器人完成预期的动作,并将动作存储为相应的功能指令,作为机器人工作指令并不断重复再现[4]。目前,国内外生产过程中主要应用的还是传统的示教编程。但是,示教编程中存在的问题显而易见的,如机器人示教主要靠肉眼对机器人运动位置进行判断,示教的精度难以保证,而且在对复杂路径进行示教时,示教难度成倍增加;同时,示教编程的过程繁琐,通常需要对示教程序进行反复修改,才能达到理想效果,其效率不高;另外,对于一些工件与机器人需要协同动作的情况,示教编程的方法难以实现。机器人的离线编程系统与在线编程存在着本质区别,它主要采用了计算机几何图形表示的方法,对机器人本体和工作环境进行建模,然后计算机几何算法进行轨迹设计与规划,并控制机器人进行加工仿真。与传统的示教编程相比,离线编程的优点显而易见,如能够在不影响机器人工作的情况下,对机器人进行编程减少对机器人工时的使用;能够对机器人的运动进行碰撞干涉检查,使程序更加安全合理;能够针对不同品牌和型号的机器人进行编程,设计的轨迹移植性好;能够实现计算机辅助制造的一体化融合;便于修改机器人程序[5]。如今,越来越多的国内企业开始引进机器人代替人工来进行生产,机器人离线编程已经成为机器人工作程序编制的重要工具。机器人离线编程系统将对企业的发展起重要的作用。

1 机器人离线编程系统关键技术

机器人离线编程系统是通过在计算机上通过机器人几何模型与实际工作环境的模型,建立机器人系统运动的数字模型,并对机器人运动的空间轨迹点进行编辑,通过进行机器人的运动仿真,对工作过程中的碰撞和干涉进行检查,最后对编制的程序进行后置[6]。因此,建立机器人离线编程需要具备以下关键技术。

1.1 机器人运动学

机器人运动学是通过数学方程,来表示机器人在空间运动中各个关节的运动变换,进而对机器人各个关节的空间位置与姿态进行求解[7]。机器人运动学是离线编程的数学基础,通过机器人运动学的求解,可以使离线编程系统中的几何模型的运动仿真与真实机器人的运动一致。机构运动的求解分为正向求解和逆向求解,正向求解是已知机器人关节角来计算机器人末端的空间坐标与姿态,逆向求解刚好相反,是通过机器人末端空间位置与姿态求解机器人的关节角。正向求解和逆向求解都是离线编程系统中不可缺少的部分。

1.2 CAD图形环境

CAD图形环境是工艺设计人员进行机器人离线编程的交互操作的工具。良好的交互环境能够提高系统的易用性与友好性,使得机器人离线编程更加方便快捷。在CAD交互式图形环境中进行机器人三维运动的仿真,可以检验编制程序是否正确,能够更好地对编程轨迹进行规划。

1.3 碰撞检测算法

碰撞检测算法是对计算机中的几何模型是否相交的检查,主要有空间分解法与层次包围盒法。空间分解法是将整个虚拟空间划分成相等体积的小的单元格,只对占据了同一单元格或者相邻单元格的几何对象进行相交测试;层次包围盒法是用体积略大而几何特性简单的包围盒来近似地描述复杂的几何对象,通过检测包围盒的相交情况来判断几何对象是否相交[8]。碰撞检测是在研究机器人的轨迹规划和仿真时的关键问题,是离线编程系统的重要组成部分。

1.4 后置处理

后置处理是把离线编程系统中编制好的机器人运动轨迹通过机器人可识别的语言进行输出,使真实机器人能够按照设计的轨迹进行运动。由于不同的机器人品牌的控制器所支持的编程语言不同,机器人可识别的语言形式的多种多样。因此,离线编程系统的后置处理形式,需要满足多样性与准确性的要求,是离线编程系统与机器人通信的桥梁。

2 国内外主流商业软件

对于机器人离线编程的研究始于1986年,美国Tecnomatrix公司发布了Rob CAD软件,用于进行机器人仿真[9]。随后,美国、日本以及一些欧洲国家的研究机构与机器人公司在机器人的离线编程领域做了大量的研究工作。随着我国制造业现代化水平提高,国内也开展了许多针对机器人离线编程的相关研究。国内外主流的机器人离线编程商业软件有如表1所示的几种。

2.1 Robot Art

Robot Art由北京华航唯实机器人科技有限公司研发,是目前离线编程软件国内品牌中的顶尖的软件。软件根据几何数模的拓扑信息生成机器人运动轨迹,之后轨迹仿真、路径优化、后置代码一气呵成,同时集碰撞检测、场景渲染、动画输出于一体,可快速生成效果逼真的模拟动画(图1)。广泛应用于打磨、去毛刺、焊接、激光切割、数控加工等领域。Robot Art教育版针对教学实际情况,增加了模拟示教器、自由装配等功能,帮助初学者在虚拟环境中快速认识机器人,快速学会机器人示教器基本操作,大大缩短学习周期,降低学习成本。

Robot Art具有以下优缺点:1)支持多种格式的三维CAD模型,可导入扩展名为step、igs、stl、x_t、prt(UG)、prt(Pro E)、CATPart、sldpart等格式;2)支持多种品牌工业机器人离线编程操作,如ABB、KUKA、Fanuc、Yaskawa、Staubli、KEBA系列、新时达、广数等);3)拥有大量航空航天高端应用经验;4)自动识别与搜索CAD模型的点、线、面信息生成轨迹;5)轨迹与CAD模型特征关联,模型移动或变形,轨迹自动变化;6)一键优化轨迹与几何级别的碰撞检测;7)支持多种工艺包,如切割、焊接、喷涂、去毛刺、数控加工;8)支持将整个工作站仿真动画发布到网页、手机端。

但是软件不支持整个生产线仿真,对国外小品牌机器人支持不足。作为国内机器人离线编程的首款功能完备的商业软件,其友好的交互界面和丰富的轨迹生成功能,已获得国内广大机器人使用企业的青睐。

2.2 Robot Master

Robot Master是加拿大Jabez Technologies公司的一款商业机器人离线编程软件,是目前离线编程软件国外品牌中的顶尖的软件,支持市场上绝大多数机器人品牌(图2)。Robotmaster在Mastercam中无缝集成了机器人编程、仿真和代码生成功能,提高了机器人编程速度。可以按照产品数模,生成程序,适用于切割、铣削、焊接、喷涂等。独家的优化功能,运动学规划和碰撞检测非常精确,支持外部轴(直线导轨系统、旋转系统),并支持复合外部轴组合系统。但该软件暂时不支持多台机器人同时模拟仿真,由于基于Master CAM做的二次开发,价格昂贵。

2.3 Robot Works

Robot Works是来自以色列的机器人离线编程仿真软件,与Robot Master类似,基于Solidworks做的二次开发。其主要功能如下:1)全面的数据接口:Robot Works是基于Solidworks平台开发,Solidworks可以通过IGES,DXF,DWG,Prar Solid,Step,VDA,SAT等标准接口进行数据转换;2)强大的编程能力:从输入CAD数据到输出机器人加工代码只需4步;3)强大的工业机器人数据库:系统支持市场上主流的大多数的工业机器人,提供各大工业机器人各个型号的三维数模;4)完美的仿真模拟:独特的机器人加工仿真系统可对机器人手臂,工具与工件之间的运动进行自动碰撞检查,轴超限检查,自动删除不合格路径并调整,还可以自动优化路径,减少空跑时间;5)开放的工艺库定义:系统提供了完全开放的加工工艺指令文件库,用户可以按照自己的实际需求自行定义添加设置自己独特工艺,添加的任何指令都能输出到机器人加工数据里面。

但是由于Robot Works基于solidworks进行二次开发,其编程繁琐,机器人运动学规划策略智能化程度低。而其生成轨迹方式多样、支持多种机器人、支持外部轴等功能特点,同要为其赢得了大量的用户。

2.4 ROBCAD

ROBCAD是西门子旗下的软件,软件系统庞大,重点在生产线仿真(图3)。软件支持离线点焊、支持多台机器人仿真、支持非机器人运动机构仿真,精确的节拍仿真,ROBCAD主要对新型机器人的设计概念与结构进行设计。主要特点如下:1)能够支持主流的CAD软件(如NX、CATIA、IDEAS等);2)可以实现工具、机器人和操作者的三者的可视化操作;3)能够进行制造测试以及编程的仿真。

但是由于其价格昂贵,且离线功能较弱,更由于其从Unix系统移植而来的界面,人机界面不友好。

2.5 DELMIA

DELMIA是达索旗下的CAM软件,DELMIA有6大模块,其中Robotics解决方案涵盖汽车领域、航空领域和一般制造业。DELMIA的机器人模块ROBOTICS的柔性化解决方案,可以进行机器人快速建模、仿真与验证。

使用DELMIA的Robotics模块,能够方便快捷实现:1)从超过400种以上的机器人的数据库中,下载机器人和配套的工具资源;2)完成生产线的布置与规划;3)对工艺所需的资源按工作单元进行细化布局。但是由于DEL-MIA属于专家型软件,操作难度太高,价格昂贵。

2.6 Robot Studio

Robot Studio是瑞士ABB公司配套的软件(图4)。应用Robot Studio可以实现对机器人整个生命周期的编程、仿真与调试。具有如下功能:1)丰富的CAD数据格式接口:支持多种常见的CAD几何模型数据格式,包括IGES、STEP、VRML、VDAFS、ACIS及CATIA等;2)自动路径设计(Auto Path)功能:通过拾取工件的CAD几何模型中的元素,能够快速地自动生成跟踪加工曲线,以及设计机器人的空间位置,采用传统的示教方法,通常需要更长的时间;3)路径优化:Robot Studio能够检测机器人在运动中的奇异点,并进行报警,以防止机器人在真实的运动中奇异,用户还可以通过仿真监视器,对机器人轨迹中不良的位置进行检查和修改,保证机器人运动的有效性,并可以对工具坐标的速度、加速度、奇异点或轴超限问题等进行优化,提高效率;4)可达性分析:用户可通过自动搜索(Autoreach)功能实现机器人运动的可达性分析,在使用该功能时,可以任意拖动机器人或工件,使所有运动的位置均可到达,在很短的时间之内可完成机器人工作空间的布局和优化;5)碰撞检测:碰撞检测功能可避免设备碰撞造成的严重损失;6)方便的程序编辑功能:用户能够方便地在计算机中离线对机器人程序进行编辑,能够提高编程的效率与可用性;7)事件表:用户可通过该功能直接观察机器人工作单元的I/O状态,并可将I/O姿态与仿真事件相连接,实现工位内机器人及所有设备的仿真;8)虚拟示教平台:该功能通过与真实示教器相同的图形界面来操作机器人,能够使机器人操作人员更加熟悉,提高程序的友好性;9)快速后置:系统生成的机器人程序可直接驱动实际机器人进行运动;10)VBA二次开发功能。用户可采用VBA对Robot Studio功能进行改进和扩充,根据用户具体需求开发功能相应的功能。但是由于只支持本公司品牌机器人,机器人之间的兼容性很差。

3 机器人离线编程发展趋势

随着科学技术的不断发展,使工业生产系统不断向大型复杂开放的方向发展,反过来又对机器人等工业技术提出了更高的要求,为此机器人离线编程技术有着以下发展趋势。

1)多机器人协调控制,即进行多机器人同时工作时的编程,需要考虑到多机器人的协调运动,避免干涉碰撞;

2)对生产线进行实时的监控,能够进行选程无人生产,对工作结果进行实时反馈;

3)对新型机器人进行离线编程,如六轴机器人,并联机器人等;

4)应用虚拟现实技术对机器人进行直觉示教与快速编程,虚实融合技术与机器人离线仿真编程软件是未来的发展趋势[10]。

4 结语

随着工业机器人在生产中的作用日益明显,机器人的工作方式也越加复杂,传统的示教编程已经无法满足现代工业生产的需求。机器人离线编程技术将是今后机器人编程的主要手段。机器人离线编程系统对于提高工业机器人的工作效率以及进行机器人推广应用有着重要意义。本文对机器人离线编程中应用的关键技术进行了简述,用以作为评判机器人离线编程系统的准则;同时,详细介绍了国内外主流的机器人离线编程商业软件,并对其优缺点进行了概述。

参考文献

[1]戴文进,刘静.机器人离线编程系统[J].世界科技研究与发展,2003,25(2):69-72.

[2]陈香香.中国机器人产业的发展之路[J].机器人技术与应用,2015(2):14-16.

[3]郑荣.机器人离线编程系统设计与研究[J].世界制造技术与装备市场,2010(5):90-92.

[4]唐涛宇.机器人离线编程系统的研究[D].哈尔滨:哈尔滨工业大学,2013.

[5]何广忠.机器人弧焊离线编程系统及其自动编程技术的研究[D].哈尔滨:哈尔滨工业大学,2006.

[6]王洪雨.基于Solid Works的工业机器人离线仿真系统分析[J].企业导报,2016(13):190.

[7]蔡自兴.机器人学[M].北京:清华大学出版社,2000.

[8]高玉琴.三维空间中碰撞检测算法的研究[D].武汉:华中科技大学,2007.

[9]张继禹,蔡鹤皋,王树国,等.一个大型机器人仿真系统-Rob CAD[J].哈尔滨工业大学学报,1993,25(3):108-133.

机器人编程 篇6

一、Scratch软件对青少年机器人编程的作用

1. 简化青少年机器人编程步骤

Scratch技术抛开了相对复杂的Arduino,直接用Scratch控制,简化青少年机器人编程步骤,比较适合小朋友入门学习。另外,Scratch目前的主要功能包括:寻线,避障,超声波测距,温度、光强度测量,两路LED显示,一路蜂鸣器,外部扩展两路模拟口,两路IO,两路PWM输出,可以代替Scratch传感器板,可实现微信、手机APP遥控机器人,甚至可以让机器人发邮件、微博,适合小学生进行机器人编程的学习。而且能编写一些现在流行的机器人模型,调试、改进完整的编程创作过程,非常适合初学者的学习。

2. 降低青少年机器人编程的难度

对于程序设计的初学者来说,常常面临缺乏程序设计概念知识、语法结构过于庞大复杂、抽象思维能力和解决问题的能力不足、不熟悉程序编辑环境等困难,容易陷入无法建构知识的困境,而Scratch软件应用于青少年机器人编程中能够利用软件中各种清晰明了的操作步骤降低机器人编程的难度,这种软件在机器人编程中有一个特殊的简单模式,小学生只要按照这个模式进行制作就能够避免很多难题,提高小学生的制作成就感。

3. 能够使学生愉悦地学习机器人编程

利用Scratch软件进行机器人编程的学习,可以提高学生学习兴趣,在Scratch教学中,教师也可以有意识地引导学生用自然语言来描述他们的创意、想法。如让学生用自然语言来描述一个机器人,比如变形金刚,并将它们和Scratch的教学合二为一。从学生看动画讲故事到学生实际动手操作,随着教学的开展与深入,学生将不断用语言描述他们的构思。当学生完成从编剧到导演的转变时,我们可以看到的是:故事的叙述是脱口而出,而制作则是水到渠成。在学习的过程中提高了动手操作能力,使小学生能够愉悦地进行学习。

二、Scratch解决青少年机器人编程问题的途径

1. 理清教学思路

将Scratch技术应用到小学生的信息技术课堂中,能够满足小学生爱玩的天性需求,同时能够提高小学生上课的积极性,提高学生动手操作能力。将Scratch技术应用于机器人的编程教学中能够解决动画制作、游戏制作以及多媒体素材等方面的问题,确定学习内容以后,必须理清课堂思路,首先在Scratch官网上搜索能够体现设计团队初衷的材料,然后结合小学生实际教学内容开展Scratch教学,以提高小学生学习兴趣,促进小学生学习水平的提高。

2. 利用Scratch技术降低机器人编程难度

Scratch应用于青少年机器人编程过程中,学生除了可利用传统的数字化创作方式外,还可用编程的方式进行创作。这使得数字化创作过程变得更有趣,而创作出的作品更具开放性、灵活性和交互性。通过编程方式创作的作品还可改变以往线性的播放顺序,使得作品随操作者不同的操控而产生不同的画面。以编程的方式进行创作,降低了机器人编程难度。

3. 打开思路,积极引导小学生解决编程难题

Scratch软件具有很强的交互性,而且其素材表现力比较强,与传统编程软件相比具有简单、快捷的特点,小学生比较容易上手。所以在机器人编程过程中教师要注重学生思维的引导,为小学生提供一个良好的机器人编程学习环境。例如,在主体活动中要求学生独立完成“接苹果”作品,这个作品由“接鸡蛋”改编而成,学生必须根据“接鸡蛋”中的设计原理,设计滑竿的左右位置,控制篮子的位置,以便完成游戏编程。这种制作过程极大地提高了小学生的思维能力和动手能力,促进了小学生实践能力的提高。

智能机器人教学利用Scratch技术,丰富了小学生的教学形式,培养了小学生的思维创造能力和动手操作能力,有利于开发小学生的智力,促进小学生学习兴趣的提高。同时又能够促进学校信息技术课堂水平的提高,是未来教育的一种发展趋势。

摘要:随着现代信息技术的发展,培养信息素养成为教育的主要目的之一,在小学教育中应实施程序设计为主导的教育,强化信息技术的应用,提高教师应用信息技术的水平,提高小学生的学习能力、创造能力和思维开拓能力。主要分析用Scratch解决青少年机器人编程问题。

关键词:Scratch,青少年,机器人编程,教学思路

参考文献

机器人编程 篇7

关键词:图形化编程,编译器,数据流,伪代码

0 引言

教育、娱乐型机器人是将娱乐性和技术创造相融合, 逐步成为机器人研究的热点之一, 形成了巨大的市场感召力。基于图形化编程的机器人专用软件研究系统 (Graphical Robot Special Software Study System, GR4S) 是典型的图形化编程环境。使用该系统的用户无需任何的程序设计语言知识, 只要将所需的图标从功能模块面板中拖拽到编程工作区, 按照一定的逻辑顺序进行连线就完成了以往复杂的编程过程。

本文主要分析现代编译器的体系结构, 指出了其中存在的缺陷;并根据GR4S系统及其相关硬件的特点, 设计出一种基于API函数框架的有效编译系统, 改进以上缺陷;通过调用GR4S的编译器, 实现了目标代码为API/伪C语言代码 (Fake C, 简称FC) 的编译过程。

1 编译技术

编译技术是现代软件技术的重要组成部分, 功能是把用高级语言书写的源程序翻译成与之等价的目标程序。无论在系统软件还是在模式识别等其他领域, 编译技术都起着非常重要的作用。

编译技术从最初的解释技术到Java虚拟机中使用的及时编译技术以及动态编译技术, 已经具有较为成熟和完整的理论体系, 编译器体系结构也有了很大发展。

1.1 现代编译器的体系结构

现代编译器一般是以AST (Abstract Syntax Tree) 为核心的分析器体系结构, 如图1中所示。其基本原理为:分析器构造出源程序的AST, 然后通过对AST的遍历进行语义分析等各种分析与识别。

基于AST的编译器包含以下内容[1]:

(1) 分析器识别源程序并生成AST结构, 它比具体语法树更易于理解。目前已经有许多工具能够自动生成AST。

(2) 基于AST的分析语义分析、代码生成、代码优化等过程。这需要对AST进行遍历、转换和变化, 图1中AST上的自回路即表示了AST的自我进化过程。

(3) 分析器构造工具Parser Generator为自动化工具 (虚线表示不是必需的) 。其产生的分析器可以只是分析表 (如LR分析表等) , 也可以和语法分析器Yacc (Yet Another Compiler Compiler) 一样将分析器表示为某种语言的代码。

(4) 用户编码语义分析、代码生成和代码优化过程等由用户编码来完成。在采用AST结构的情况下, 是直接操纵AST的分析过程。图1中的Tree Walker (虚线表示不是必须的) 为这些分析过程提供了对AST结构的遍历操作, 因此可以将用户代码和自动工具生成的分析器代码分离开来[2]。这种树内操作的形式在一定程度上会限制用户对AST直接操作的能力。

1.2 编译技术存在的问题及改进

近几年来, 编译器的组成已从管道 (Pipeline) 体系结构逐步发展为以树型结构为核心的仓库 (Repository) 式体系结构[3], 从而将编译过程中紧密耦合的各个部分分解为相对独立的阶段。编译器也成为了由相互独立并协作的分析、综合模块组成的软件系统。

大部分编译器都是基于文本流的, 编译过程分为分析与综合两个阶段。在需要处理程序设计语言的应用中, 传统的语言分析技术面临着如下问题:

(1) 被分析语言的多样性造成语法的多变性。

(2) 针对静态抽象的语法和特定的语法分析算法实现动态的语言识别过程。这极大地增加了分析器设计、实现的难度, 降低了系统结构的灵活性。

(3) 在使用语法分析器Yacc等工具时, 编译器的设计、实现与调、测试过程的分离使维护系统一致性更加困难。

(4) 分析器依赖于某语言的具体语法, 导致其单一的识别能力。

(5) 分析器构造工具对具体分析算法的依赖性使得对语法的部分修改可能导致整个语法规则的变化, 从而可能引起分析器整体设计的变动。

对此, 模块化语法与语法合成技术可以在一定程度上缓解上述问题[4]。此外, 基于语义的编译器体系结构也是研究的方向。然而, 模块化语法虽然利用了同种语言的方言间的共性, 但是对不同语言间的共性仍然无法充分利用。基于语义的编译器体系结构由于语义学本身尚处于发展之中, 因此距离实际应用仍有较大距离。

数据流模型[5,6]提供了一个解决上述问题的途径, 它不仅能有效地描述数据处理与转换的问题, 而且具有很好的可视性、直观性与较高的运行效率, 因此被广泛应用于面向图形化的编程领域。

数据流模型是一个比基于文本语言的控制流更为丰富的计算模型, 因为它的本质是并行的, 而某些高级语言 (如:C/C++、BASIC) 则不是, 它们必须依赖于对操作系统的库函数调用来实现并行机制。因此, 编译器不能确保代码的共享部分被适当地保护, 使其难以建立并行程序。

2 GR4S中编译器的实现

GR4S编译器主要采用了伪代码、三层次编译系统等关键技术, 使用该编译系统以能编译生成基于API函数的FC语言目标代码的基本框架。

2.1 数据流模型

GR4S是典型的图形化编程环境, 与传统文本编程的流程不同, 其核心是基于结构化的数据流的编程方式, 如图2所示:

图2中可以看出, GR4S系统中编译器是图形语言与目标语言之间的桥梁;不难发现, 一个数据流的自然表示是一个图形或图表, 而数据流模型是一个比基于文本语言的控制流更为丰富的计算模型, 因为其本质是并行。随着, 计算机速度不断加快, 存储容量不断增长, 计算机屏幕不断加大, 直接进行交互式的数据流图编辑是十分简单的。

2.2 编译器中的关键技术

编译过程可分三个层次:第一层是用户层, 用户可以将编好的图形化机器人程序生成对应的伪代码;第二层是中间层, 对于用户是透明的, 在这一层中编译器将伪代码翻译为汇编指令;第三层实现层, 将汇编指令解释为机器代码, 这一层对用户来说也是透明的, 用户无需了解实现细节, 直接通过, GR4S中的下载功能, 将机器代码下载到机器人控制器。具体为以下四个步骤:首先, 将由PC上的图形化编程环境得到图形语言转换为FC代码;其次, 将FC代码映射到汇编语言;然后, 将映射得到的汇编语言转换为目标程序代码 (字节码) ;最后, 由内嵌的虚拟机生成可以在uCLinux操作系统下可执行的程序。具体编译工作的流程, 如图3所示:

FC代码是一种伪C语言代码, 它并不是真正的程序, 而是一种帮助使用者理解所编写的图形程序的辅助文本和由图形化语言所编写程序产生目标代码的中间代码, 由于采用了伪代码技术, GR4S具有更大的灵活性和兼容性。

2.3 编译器的实现

GR4S中的编译器虽然仍是以编译原理和编译技术为基础实现的, 但是其独特性表现在两点:第一, 它的源程序是图形框图, 而不是其他基于命令行的高级编程语言;第二, 它的目标程序是伪C语言代码, 并不是机器所能识别的二进制代码。

编译器的开发工具选择的是Visual C++, 具有非常友好的人机交互界面, 强大的编译管理功能、齐全的基本类库以及完备的调试工具, 是目前使用最广泛的开发语言之一。

编译程序采用的是静态语法分析方法即语法制导编译, 其基本思想是在编译的过程由FC程序的语法结构来控制, 而语法结构则由语法分析器来识别。事实上, 语义分析和代码生成是编译程序的主要部分, 这部分的主要代码如下:

Compile-C- (char* strFileName)

{char strASMFileName[MAX-FILENAME-LEN];

HANDLE hFile;

DWORD dwNumberOfBytesWritten;

int nThreadStart, nThreadEnd, i;

char str1[256], str2[256];

//step1.打开C语言文件

if (strFileName==NULL)

return FALSE;

if (OpenCFile (strFileName) )

strcpy (this→m-strCFileName, strFileName) ;

else return FALSE;

//step2.打开code map数据文件

if (!OpenCodeMapFile () )

return FALSE;

//step3.对C代码进行处理

//去除所有注释

if (!this→RemoveAllRemarks () )

return FALSE;

//去除所有控制字符

if (!this→RemoveAllControlChar () )

return FALSE;

//3.将编译好的代码写入文件

strcpy (strASMFileName, this→m-strAppPath) ;

strcat (strASMFileName, ASM-FILE-PATH) ;

if ( (hFile=::CreateFile (strASMFileName,

GENERIC-READ|GENERIC-WRITE,

0, NULL, CREATE-ALWAYS,

FILE-ATTRIBUTE-NORMAL,

NULL) ) !=INVALID-HANDLE-VALUE)

{//将代码写入文件

if (!::WriteFile (hFile, TaskInfo. strASMCode,

strlen (TaskInfo.strASMCode) , &dw Number Of Bytes Written, NULL) )

{ CloseHandle (hFile) ;

return FALSE; }

CloseHandle (hFile) ; }

else return FALSE;

return TRUE;}

而GR4S编译器的实现是基于API函数框架的, 因此, 充分利用了API函数的特性和面向对象的特性。对于词法分析器、语法分析器以及语义分析和目标代码的生成的实现, 都是编写在CCompile2Asm这个编译类中。这样设计既可以方便编译器内部的相互访问, 又有利于程序员在编译的各个不同阶段的调试, 随时添加提供编译效率的方法。

3 结束语

综上所述, 整个编译过程采用了层次化编译的方法, 编译器主要完成两个任务:一是对FC代码的分析, 将其映射为汇编代码;二是将映射生成的汇编代码翻译成虚拟机可识别的目标代码, 以及对目标代码进行基于API的程序综合。GR4S的编译器在第二次编译中运用了虚拟机技术, 结合底层操作系统的特点, 生成计算机可识别的机器代码, 便于系统在不同控制平台的移植。

参考文献

[1]林奕, 朱怡安, 付游.一种面向对象编译器体系结构框架[J].西北工业大学学报, 2002, 3 (20) :400-405.

[2]Gamma E, Helm R, Johnson R, et al.设计模式:可复用面向对象软件的基础[M].机械工业出版社, 2000:218-228.

[3]Shaw M, Garlan D.软件体系结构[M].清华大学出版社, 1998:83-85.

[4]Vanden Brand M, Sellink A, Verchoef C.Current Parsing Techniques inSoftware are Renovation Considered Harmful[EB/OL].http://www.cwinl/markvdb/papers/refps, 1998.

[5]Whitng P G, Pascoer S V.A history of dataflow languages[J].IEEEAnnals of History of Computing, 1994, 16 (4) :38-59.

机器人编程 篇8

根据机器人工业协会的定义,工业机器人是一种用于工业自动化应用的可以自动控制、可再编程的、多用途的三轴以上的可编程操纵器,它可以固定也可以移动。随着中国国民经济的发展、工业自动化水平的提升,中国工业机器人市场潜力日益增大,发展壮大我国自主品牌的机器人及自动化成套装备产业已成为当务之急[1,2]。作为工业机器人主要应用领域喷涂方面的喷涂机器人愈来愈具有发展前景。喷涂机器人不仅可以改善工人作业条件,而且还可以提高产品的质量、降低生产成本,从而提高企业的竞争力。由于喷涂机器人应用范围的扩大和所完成任务复杂程度不断增加,机器人工作任务的编程技术己经成为一个重要问题,其对机器人的推广应用及其应用效率的发挥起着越来越重要的作用。通常机器人编程方式可分为示教再现编程和离线编程。示教再现编程由于存在如下两个问题:(1)编程时需要机器人停止工作,这不但降低了效率,而且增加了生产的成本;(2)编程的精度往往取决于操作人员的工作经验。解决这一问题就需要采用离线编程的方法。而离线编程的关键就是对设备进行建模,这是整个离线编程系统的基础[3]。本文以Solid Works2009作为开发平台,以Visual Studio.net作为开发工具,实现了本实验室研发的喷涂机器人的三维建模。

2 Solid Works平台

Solid Works是基于Windows的主流三维设计软件,集成了CAD/CAPP/CAE/CAM/PDM等功能,在此平台上可完成产品的集成设计,工艺设计,有限元分析,数控加工编程,产品数据管理。同时Solid Works的二次开发平台也以其开发方法容易,强大的功能以及开发和维护成本低等一系列优点而被广大的技术人员所采用。Solid Works API提供了大量的COM对象用于二次开发,这些COM对象总共可以分为十大类,数百个对象,涵盖了Solid Works基本操作和全部的数据模型。通过对Solid Works的COM对象的调用,用户可以基于Solid Works平台,构建符合特定需求的二次开发系统。

3 喷涂机器人设备建模模块

喷涂机器人设备建模是指要计算机上首先“绘制”出机器人的3D模型,然后分别定义模型的各个关节的属性,通过定义这些属性,就可以控制机器人的模型,使之成为离线编程所需要的实体。喷涂机器人的设备建模包括四个部分,即零件建模、装配建模、参数化建模以及运动学建模。

3.1 零件建模模块

在整个的设备建模系统中,零件建模是最为基本的模块。一个零件就是一个独立的刚体,没有任何的自由度,它的属性也是最少的。为了提高离线编程系统的运行速度,在零件建模的时候,对机器人各操作臂和关节进行简化。如图1,左图为喷涂机器人小臂设计模型,右图为用于离线编程系统中的简化模型。简化后的小臂模型省去了原模型中的复杂特征曲面,只保留了总体特征和小臂长度尺寸。

3.2 装配体建模模块

当把所有的零件模块通过程序“绘制”出来以后,就需要对这些零件模块进行装配。装配时,在各个转动关节处,定义一些转角位置配合关系,用以锁定各个关节的转动位置。通过这些配合属性,可以控制机器人各关节的转动。如图2所示,利用大臂和小臂的上视基准面建立名为Angle3的夹角配合关系。夹角配合值为90-θ3。

3.3 参数化建模

参数化建模是指针对于系列化的机器人产品,提供参数化的人机交互界面,设置各关节臂长,可实现喷涂机器人3D模型的重构。本文采用Visual Studio.net作为开发工具,通过对Solid Works二次开发实现此功能。表1列出了喷涂机器人的基本参数,图3为二次开发获得的参数化建模的人机交互界面,以及重构后获得的机器人本体模型。

3.4 运动学模块

运动模块提供了设备的关节运动、运动到目标点、路径运动等功能。机器人运动学包含两类问题,第一个是正运动学问题,给定操作臂的关节变量,求解相应的末端执行器的位姿。第二个是逆运动学问题,已知末端执行器的位姿,则可以求解此状态下的关节变量[4]。运动模块的主要是通过对Solid Works的Motion模块进行二次开发实现。开发的流程如图4。

4 仿真实验

系统中的设备对象是由本实验室和广州数控设备有限公司联合研制的的喷涂机器人,设备具有六个自由度。建模后的机器人本体对象如图3。用于仿真研究的喷涂对象如图5。图6为仿真实验过程。仿真实验验证了所建的设备模型的正确性。

5 结论

对于离线编程系统来说,最基本的模块就是建模模块,建模的成功与否直接关系着后续的所有工作。本文的主要工作如下:(1)以Solidworks为开发平台,构建了喷涂机器人的设备模型;(2)以Visual Studio.net作为开发工具,通过Solidworks提供的API函数实现模型的重构和运动仿真;(3)针对复杂的喷涂曲面进行仿真实验,实验结果验证本文所建模型的正确性。

参考文献

[1]徐方.工业机器人产业现状与发展[J].机器人技术与应用,2007(5):2-4.

[2]陈坤聊,陈永明,林一松.基于SMP运动控制内核的机器人控制系统[J].机电工程技术,2009(3):19-20,28.

[3]冯胜强,胡绳荪,杜乃成.基于UG的弧焊机器人离线编程系统的设备建模[J].焊接学报,2008,29(4):90-94.

机器人编程 篇9

汽车轮毂喷漆在汽车制造业中是很重要的一环节, 随着汽车需求的日益增加, 高质量高效率的喷漆要越来越得到重视。现在仍有许多企业采用手工喷漆, 工作环境恶劣, 对工人身体健康造成不良影响;加工设备落后, 生产效率和质量低, 难以满足汽车对轮毂的要求[1]。

随着工业机器人的迅速发展, 将机器人运用到生产加工以代替人工操作已成为一种热门趋势。现在对于许多重复性的循环操作以及简单的加工, 相关的机器人技术都已经渐趋成熟。而对于复杂曲面的操作, 许多机器人仍采用传统的“人工示教法”来完成, 这样的方法, 操作繁琐, 效率低, 同时精度难以有效保证, 甚至难以实现[2]。

而在发展了许多年的CAD/CAM领域, 运用数控G代码编程的技术已经相当成熟, 其中包含了各种线条, 曲面等复杂工件加工的操作程序, 涵盖了各种直线、曲线的插补, 循环等加工方式。其中的UG软件的加工模拟功能就能很好的实现这一功能, 得到加工信息[3]。

通过对加工信息的分析处理, 使得转换成机器人能够识别的代码程序, 实现机器人喷漆加工运动。

1 轮毂的建模及模拟加工处理

由于机器人软件不具备自动编程的能力, 因而需要结合相关的CAD/CAM图形处理工具。目前交互式的图形编程技术已得到广泛应用, 其中UG软件中就能完成模型的草图绘制, 三维成型, 然后进行加工处理, 最后导出加工信息。

对于汽车轮毂, 结合产品型号说明, 对其尺寸参数进行分析测量后, 在UG中建立起了三维模型, 为了分析沿轮毂曲面的机器人运动轨迹, 截取30°的曲面模型进行研究。如图1所示。

由于机器人运动需要编程, 对于每个加工点需要输入相应的代码。而轮毂曲面的复杂性, 决定了其上的三维坐标不易直接精确提取。为解决这一问题, 选取自由曲面在UG中进行三维重建。考虑到喷漆距离, 因此, 喷枪的实际加工位置离曲面有一段距离L, 结合实际喷漆工艺, 取这段偏移距离为L=100mm。又因为UG是切削加工, 刀具是直接与加工毛培接触的, 而喷漆实验中, 喷枪头与刀具刀头所在的位置要相同。所以, 在建模的时候, 对模型进行向外偏置L距离, 形成的曲面轮廓可看做刀具加工对象[4]。

在UG加工模块中, 选择轮廓铣, 分别设置毛培、切削安全体、刀具参数、进给参数、导轨特性等一系列数据, 完成之后得出在曲面上的刀轨路径, 如图2所示。

图中所形成的刀路沿着曲面来回做往复运动, 由于喷漆所在的区域会产生漆膜的相互叠加, 会导致厚度不一致, 因此在喷漆是需要调整好合适的间距。考虑到喷漆叠加漆膜均匀性的要求, 在设置刀路轨迹间的间距时, 选取不同的刀头尺寸成了关键影响因素。图中所选刀具直径为10mm[5,6]。

模拟运行无误后, 进行加工的后处理, 得到运行轨迹各个位置的三维坐标。代码如图3 (a) 所示, 为方便识别, 也可在后处理中把代码以数控代码的方式生产, 如图3 (b) 所示。

2 代码的提取与机器人姿态控制

对得到的代码, 机器人不能直接识别, 需要对其信息进行提取甄别, 才能转换为机器人课识别操作的语言。因此需要找出其中对应关系, 在VC中编写MFC界面程序, 通过调用NC代码文件, 后台处理文件信息, 提取机器人可执行的有效数据信息[7]。

其中X、Y、Z数据可由代码中提取, 先读入转换好的TXT格式的代码文件, 然后对UG代码进行处理, 去掉每行前后的空格以及无关的内容, 对每行进行判断, 是否为G1, G2或G3, 若是其中一种情况, 则把其后对应的X, Y, Z坐标分别记录保存到数组a[m][0], a[m][1], a[m][2]中, ++m。然后进行下一行判断, 同样的根据不同情况跳转到不同的代码段中进行处理。得到数组之后, 把其中的内容保存到新生成的TXT文件中, 按顺序放置好数据, 以方便提取[8]。

机械臂要运动, 不仅需要每个工作点的三个位置坐标X, Y, Z, 同时也需要知道每个点对应的姿态Rx, Ry, Rz。而数控代码中则不包含这一信息。对轮毂曲面模型进行分析, 如图4所示, 将三维曲面投影到两个平面, 分别为XOY平面和YOZ平面。如图4所示, 根据建模法则, 该模型是由曲线二沿着曲线一扫略形成侧曲面。

机器人末端执行器在每个位置的姿态方向, 即是图中箭头所指的方向, 也就是图中曲线任意位置对应的法向。

对于YOZ平面, 曲线为一个圆, 其方程为:

上式中, k为曲线上任一点出法线斜率对于YOX平面, 是一条不规则曲线, 不能用简单的公式描述。因此需要把数据提取到MATLAB中进行拟合。先通过把UG后处理中形成的保存在TXT文件中的数控代码导入到EXECLE中, 在MATLAB中进行描点。并用五次二次函数曲线去拟合[9], 如图5所示。

由拟合可知, 五次曲线的模型为:

把拟合后得到的各项系数代入到上式, 得到, 曲线方程为:

对式 (5) 求导得到:

由几何知识可知, 末端执行器由竖直方向转到垂直曲线的法线方向所转过的角度与曲线的切线斜率所对应的正切夹角是相同的, 如图6所示。

得到的第二个姿态角为:

第三个姿态Ry为0。

在X, Y, Z及Rx, Ry, Rz六个坐标参数都明确之后, 需要在VC上编程, 提取出每个坐标点的的运行方式及参数。由于在代码中上下插补方式相同或者点的任意某个坐标相同时, 都会隐含, 需要在编程是分类讨论。对于圆弧插补的情况, 数控代码只需要起终点和圆心坐标, 而机器人编程则需要经过圆弧段的起点, 中间点和终点, 因此需要从数控代码中的各参数计算出中间点, 以方便编程[10]。其工作流程如图7所示。

通过编程后, 把得到的每个位置的六个坐标保存在TXT文件中, 结果如图8所示。

3 机器人识别代码与仿真加工

数控加工代码与机器人代码的对应关系如下:

对于取得的一些列包含XYZ及Rx/Ry/Rz的六组参数, 通过采用对Staubli机器人软件中外加一个扩展模块, 采用新的编程方式, 嵌入到机器人中。能把数据转换读取到机器人可识别的软件中[11]。

扩展版是对VAL编程语言的一个可供选择的插入模块, 它对VAL编程系统添加了额外的指令。这些指令不是标准的VAL3编程指令, 每个指令将会以”$”开头。

每一个VAL3版本都会有一个特定的添加扩展版, 通常包括三个文件:一个是对应于控制器的以”.o”为扩展名的对象文件;一个是对应于仿真器的以“.dll”为扩展名的窗口文件;一个以“.cfx”为扩展名的用于检测语法错误的文件。

通过在STABULI软件上采用编程技术读取先前的代码TXT文件, 把一组组数据以数组的方式保存起来, 然后采用循环调用编程方式, 根据具体对应的插补方式, 得到属于机器人的可执行代码文件。在Staubli的虚拟加工环境3DStudio里对轮毂侧曲面进行仿真模拟, 得到的运动曲线如图10所示。

在仿真软件中成功运行后, 可以把其中的代码导入到机器人中, 就可进行喷漆实验。

4 结束语

运用工业机器人代替喷漆工人进行喷涂等轨迹作业, 可以充分利用机器人自由度高的优势, 借鉴现有的CAD/CAM技术作为离线编程的模板, 能实现机器人对图形的离线编程加工, 可以避免示教编程的大量工作, 并提高了作业精度, 同时也避免了对人工身体的伤害。

目前机器人根据图形进行离线加工还处于初级阶段, 本文虽可以实现从图形到自动编程再到机器人加工, 但其技术背景是借鉴于数控NC代码。由于数控代码中没法体现姿态的参数, 对于复杂的曲面, 还需要人为对姿态进行调整, 因而对于姿态问题的优化也是接下去重点研究工作之一, 可以更加完善地利用机器人作为加工工具, 实现智能化加工。

参考文献

[1]蔡自兴.机器人学的发展趋势和发展战略.[J]机器人技术及应用, 2001 (4) .

[2]张爱红, 张秋菊.机器人示教编程方法[J].组合机床与自动化加工技术, 2003 (4) :47-49.

[3]王振滨, 赵德安, 李医民, 等.喷漆机器人离线编程系统探讨[J].江苏理工大学学报 (自然科学版) , 2010, 21.

[4]赵燕伟.现代数控技术[M].浙江:浙江科学技术出版社, 2004.

[5]丁俊兰, 周燕飞, 孔波.仿形靠模数控加工自动编程软件的开发[J].机械制造, 2012, 50 (569) :46-48.

[6]刘为志, 栾楠, 刘宝生.基于G代码的工业机器人的自动编程[J].机器人, 2002, 24 (6) :497-501.

[9]冯川, 孙增沂.机器人喷涂过程中的喷炬建模及仿真研究[J].机器人, 2003, 25 (4) .

[8]肖软生, 王得胜, 王江红.自动编程数控加工等距型面[J].机械制造, 2011, 49 (566) :52-54.

[9]唐立山, 邓中华, 徐家军.CAM编程中刀具及工艺参数的确定[J].机械制造, 2008, 46 (525) :44-46.

[10]缪苏毅, 赵德安, 蔡纪鹤.喷漆机器人离线编程系统物体建模方法的研究[J].机械设计与制造, 2009, 1 (1) :157-159.

上一篇:合理运用下一篇:高校师范类音乐教育