机器人编程语言(一)
伴随着机器人的发展,机器人语言也得到发展和完善。机器人语言已成为机器人技术的一个重要部分。机器人的功能除了依靠机器人硬件的支持外,相当一部分依赖机器人语言来完成。早期的机器人由于功能单一,动作简单,可采用固定程序或示教方式来控制机器人的运动。随着机器人作业动作的多样化和作业环境的复杂化,依靠固定的程序或示教方式已满足不了要求,必须依靠能适应作业和环境随时变化的机器人语言编程来完成机器人的工作。

自机器人出现以来,美国、日本等机器人的原创国也同时开始进行机器人语言的研究。美国斯坦福大学于1973年研制出世界上第一种机器人语言——WAVE语言。WAVE是一种机器人动作语言,即语言功能以描述机器人的动作为主,兼以力和接触的控制,还能配合视觉传感器进行机器人的手、眼协调控制。

在WAVE语言的基础上,1974年斯坦福大学人工智能实验室又开发出一种新的语言,称为AL语言。这种语言与高级计算机语言ALGOL结构相似,是一种编译形式的语言,带有一个指令编译器,能在实时机上控制,用户编写好的机器人语言源程序经编译器编译后对机器人进行任务分配和作业命令控制。AL语言不仅能描述手爪的动作,而且可以记忆作业环境和该环境内物体和物体之间的相对位置,实现多台机器人的协调控制。

美国IBM公司也一直致力于机器人语言的研究,取得了不少成果。1975年,IBM公司研制出ML语言,主要用于机器人的装配作业。随后该公司又研制出另一种语言——AUTOPASS语言,这是一种用于装配的更高级语言,它可以对几何模型类任务进行半自动编程。

美国的Unimation公司于1979年推出了VAL语言。它是在BASIC语言基础上扩展的一种机器人语言,因此具有BASIC的内核与结构,编程简单,语句简练。VAL语言成功地用于PUMA和UNIMATE型机器人。1984年,Unimation公司又推出了在VAL基础上改进的机器人语言——VAL Ⅱ语言。VALⅡ语言除了含有VAL语言的全部功能外,还增加了对传感器信息的读取,使得可以利用传感器信息进行运动控制。

20世纪80年代初,美国Automatix公司开发了RAIL语言,该语言可以利用传感器的信息进行零件作业的检测。同时,麦道公司研制了MCL语言,这是一种在数控自动编程语言——APT语言的基础上发展起来的一种机器人语言。MCL特别适用于由数控机床、机器人等组成的柔性加工单元的编程。

机器人语言品种繁多,而且新的语言层出不穷。这是因为机器人的功能不断拓展,需要新的语言来配合其工作。另一方面,机器人语言多是针对某种类型的具体机器人而开发的,所以机器人语言的通用性很差,几乎一种新的机器人问世,就有一种新的机器人语言与之配套。

机器人语言可以按照其作业描述水平的程度分为动作级编程语言、对象级编程语言和任务级编程语言三类。

动作级编程语言

动作级编程语言是最低一级的机器人语言。它以机器人的运动描述为主,通常一条指令对应机器人的一个动作,表示从机器人的一个位姿运动到另一个位姿。动作级编程语言的优点是比较简单,编程容易。其缺点是功能有限,无法进行繁复的数学运算,不接受浮点数和字符串,子程序不含有自变量;不能接受复杂的传感器信息,只能接受传感器开关信息;与计算机的通信能力很差。典型的动作级编程语言为VAL语言,如AVL语言语句“MOVE TO (destination)”的含义为机器人从当前位姿运动到目的位姿。

动作级编程语言编程时分为关节级编程和末端执行器级编程两种。

关节级编程

关节级编程是以机器人的关节为对象,编程时给出机器人一系列各关节位置的时间序列,在关节坐标系中进行的一种编程方法。对于直角坐标型机器人和圆柱坐标型机器人,由于直角关节和圆柱关节的表示比较简单,这种方法编程较为适用;而对具有回转关节的关节型机器人,由于关节位置的时间序列表示困难,即使一个简单的动作也要经过许多复杂的运算,故这一方法并不适用。

关节级编程可以通过简单的编程指令来实现,也可以通过示教盒示教和键入示教实现。

末端执行器级编程

末端执行器级编程在机器人作业空间的直角坐标系中进行。在此直角坐标系中给出机器人末端执行器一系列位姿组成位姿的时间序列,连同其他一些辅助功能如力觉、触觉、视觉等的时间序列,同时确定作业量、作业工具等,协调地进行机器人动作的控制。

这种编程方法允许有简单的条件分支,有感知功能,可以选择和设定工具,有时还有并行功能,数据实时处理能力强。

机器人编程语言(二)
 对象级编程语言

所谓对象即作业及作业物体本身。对象级编程语言是比动作级编程语言高一级的编程语言,它不需要描述机器人手爪的运动,只要由编程人员用程序的形式给出作业本身顺序过程的描述和环境模型的描述,即描述操作物与操作物之间的关系。通过编译程序机器人即能知道如何动作。

这类语言典型的例子有AML及AUTOPASS等语言,其特点为:

(1) 具有动作级编程语言的全部动作功能。

(2) 有较强的感知能力,能处理复杂的传感器信息,可以利用传感器信息来修改、更新环境的描述和模型,也可以利用传感器信息进行控制、测试和监督。

(3) 具有良好的开放性,语言系统提供了开发平台,用户可以根据需要增加指令,扩展语言功能。

(4) 数字计算和数据处理能力强,可以处理浮点数,能与计算机进行即时通信。

对象级编程语言用接近自然语言的方法描述对象的变化。对象级编程语言的运算功能、作业对象的位姿时序、作业量、作业对象承受的力和力矩等都可以以表达式的形式出现。系统中机器人尺寸参数、作业对象及工具等参数一般以知识库和数据库的形式存在,系统编译程序时获取这些信息后对机器人动作过程进行仿真,再进行实现作业对象合适的位姿,获取传感器信息并处理,回避障碍以及与其他设备通信等工作。

任务级编程语言

任务级编程语言是比前两类更高级的一种语言,也是最理想的机器人高级语言。这类语言不需要用机器人的动作来描述作业任务,也不需要描述机器人对象物的中间状态过程,只需要按照某种规则描述机器人对象物的初始状态和最终目标状态,机器人语言系统即可利用已有的环境信息和知识库、数据库自动进行推理、计算,从而自动生成机器人详细的动作、顺序和数据。例如,一装配机器人欲完成某一螺钉的装配,螺钉的初始位置和装配后的目标位置已知,当发出抓取螺钉的命令时,语言系统从初始位置到目标位置之间寻找路径,在复杂的作业环境中找出一条不会与周围障碍物产生碰撞的合适路径,在初始位置处选择恰当的姿态抓取螺钉,沿此路径运动到目标位置。在此过程中,作业中间状态作业方案的设计、工序的选择、动作的前后安排等一系列问题都由计算机自动完成。

任务级编程语言的结构十分复杂,需要人工智能的理论基础和大型知识库、数据库的支持,目前还不是十分完善,是一种理想状态下的语言,有待于进一步的研究。但可以相信,随着人工智能技术及数据库技术的不断发展,任务级编程语言必将取代其他语言而成为机器人语言的主流,使得机器人的编程应用变得十分简单。

一般用户接触到的语言都是机器人公司自己开发的针对用户的语言平台,通俗易懂,在这一层次,每一个机器人公司都有自己语法规则和语言形式,这些都不重要,因为这层是给用户示教编程使用的。在这个语言平台之后是一种基于硬件相关的高级语言平台,如C语言、C++语言、基于IEC61131标准语言等,这些语言是机器人公司做机器人系统开发时所使用的语言平台,这一层次的语言平台可以编写翻译解释程序,针对用户示教的语言平台编写的程序进行翻译解释成该层语言所能理解的指令,该层语言平台主要进行运动学和控制方面的编程,再底层就是硬件语言,如基于Intel硬件的汇编指令等。

商用机器人公司提供给用户的编程接口一般都是自己开发的简单的示教编程语言系统,如KUKA、ABB等,机器人控制系统提供商提供给用户的一般是第二层语言平台,在这一平台层次,控制系统供应商可能提供了机器人运动学算法和核心的多轴联动插补算法,用户可以针对自己设计的产品应用自由的进行二次开发,该层语言平台具有较好的开放性,但是用户的工作量也相应增加,这一层次的平台主要是针对机器人开发厂商的平台,如欧系一些机器人控制系统供应商就是基于IEC61131标准的编程语言平台。最底层的汇编语言级别的编程环境我们一般不用太关注,这些是控制系统芯片硬件厂商的事。

各家工业机器人公司的机器人编程语言都不相同,各家有各家自己的编程语言。但是,不论变化多大,其关键特性都很相似。比如Staubli 机器人的编程语言叫VAL3,风格和Basic相似;ABB的叫做RAPID,风格和C相似;还有Adept Robotics 的V+,Fanuc,KUKA,MOTOMAN都有专用的编程语言,但是大都是相似.而由于机器人的发明公司Unimation公司最开始的语言就是VAL,所以这些语言结构都有所相似。 VAL语言是美国Unimation公司于1979年推出的一种机器人编程语言,主要配置在PUMA和UNIMATION等型机器人上,是一种专用的动作类描述语言。

VAL语言是在BASIC语言的基础上发展起来的,所以与BASIC语言的结构很相似。在VAL的基础上Unimation公司推出了VALⅡ语言;而后来staubli 收购了Unimation公司后,又发展起来了VAL3的机器人编程语言。

学习的话,一般来说各家机器人的官方网站都会有这些介绍资料,但是详细的资料就会比较欠缺。对于ABB的信息,可以下载一个Robot studio30天试用版 http://short.ie/zcfnmu;其他也都可以得到,但是有一些小型市场的公司就比较麻烦了。
        ABB机器人 编程语言 RAPID 是几个词的首字母组合,Robotics Application Programming Interactive Dialogue 。wikipedia上有一些介绍 http://en.wikipedia.org/wiki/RAPID ,详情参看 http://www.robotstudio.com/forum/default.asp
        Comau 柯马机器人 的编程语言叫做 PDL2,即 Programming Description Language 2,详情参看 http://www.pdl2.info
        Fanuc 是使用karel语言,类似pascal语言,下戴可试用30天

扒一扒工业机器人编程语言和种类相关推荐

  1. 扒一扒编程语言排行榜

    我们公司的课程主推Python , 人工智能首选语言, 2019年 排行第一." "我们是Java编程课程,Java常年排名第一" "JavaScript才是编 ...

  2. 185页深度报告 扒一扒AI金融的老底【附下载】

    来源:智东西 概要:2016年,中国爆出8家独角兽,总估值964亿美元位冠全球:2017年,毕马威全球百佳金融科技企业前三甲,蚂蚁金服.众安保险.趣店,皆来自中国:过往两年,中国成立的金融科技创企达1 ...

  3. 扒一扒「清华系」的网络安全大佬们丨110 周年校庆

    扒一扒「清华系」的网络安全大佬们丨110 周年校庆 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pqWHts32-1673773477991)(https://p3- ...

  4. 扒一扒EOS的前世今生

    扒一扒EOS的前世今生 EOS是什么?   EOS可以认为是Enterprise Operation System的缩写,即商用的一款分布式区块链操作系统,EOS主要为了解决百万级用户的使用问题,为企 ...

  5. 扒一扒MathType不为人知的技巧

    MathType作为一款编辑数学公式的神器,很多人在使用它时只是很简单地使用了一些最基本的模板,很多功能都没有使用.MathType功能比你想象中的大很多,今天我们就来扒一扒MathType那些不为人 ...

  6. oraclek导出表_全兼容Oracle?扒一扒浪潮K-DB是咋做的?

    [IT168 评论]"如果说Linux是类Unix操作系统,那么K-DB就是类Oracle数据库.会Unix的人,上手Linux要多少时间,则Oracle DBA上手K-DB就要多少时间.& ...

  7. 扒一扒.NET Core的环境配置提供程序

    前言 很久之前,在玩Docker的时候顺便扒了扒,最近,终于下定决心花了些时间整理并成文,希望能够给大家一些帮助. 目录 .NET Core中的配置 ASP.NET Core中的配置 扒一扒环境变量提 ...

  8. ASP.NET Core 2.2 : 十六.扒一扒2.2版更新的新路由方案

    ASP.NET Core 2.2 : 十六.扒一扒2.2版更新的新路由方案 原文:ASP.NET Core 2.2 : 十六.扒一扒2.2版更新的新路由方案 ASP.NET Core 从2.2版本开始 ...

  9. 扒一扒中断为什么不能调printf

    [导读] 大家好,我是逸珺. 前面说会写一下Modbus-RTU的实现,写了1000多字了,有兴趣的稍等一下哈.前面在一个群里看到一个朋友在一个串口接收中断里打印遇到了问题,今天聊下这个话题. 扒一扒 ...

最新文章

  1. 如何使用脚本控件的函数调用
  2. golang内存对齐
  3. 安装angular cli_Angular 9适用于初学者—如何使用Angular CLI安装第一个应用程序
  4. Android坑点-ByteBuffer.array() 入过坑吗
  5. OJ1030: 判断直角三角形
  6. onvif学习笔记5:onvif框架代码初步了解
  7. 超全开放 API 免费调用,这款 API 管理工具太香了!
  8. 程序员!别再盲目刷视频了!坚持做这件事儿,AI 也难不倒你!
  9. 你凭什么被叫做程序员?
  10. Win32汇编学习笔记(罗云彬)(一)
  11. strcmp函数原型 C语言
  12. WebService(一):工作原理
  13. 一个安全架构师需要做什么?有什么能力要求?
  14. Ubuntu 禁用Guest用户
  15. PreparedStatement.addbatch()的使用
  16. 智能电视聚好看连接服务器失败,智能电视为什么登录失败? 试试这样做
  17. 小米9预约如此火爆,雷军的供货能跟上吗?
  18. 制作条形码的手机App推荐
  19. 想调节—下父元素的透明度,但是又不影响子元素的透明度,怎么破?
  20. wordpress外贸跨境电商独立站WooCommerce插件安装教程

热门文章

  1. 前端工程师必须要知道的SEO技巧(2):制作比设计还要漂亮的代码(内容和语义化代码)上...
  2. STL 中的链表排序
  3. 算法竞赛入门经典 第一章 上机练习(C++代码)
  4. vue-property-decorator使用指南
  5. 检测字符串包含emoji表情
  6. 重载(overload)与重写(override)的区别
  7. 记录一次内网渗透试验
  8. Pygame - Python游戏编程入门(1)
  9. unicode 字符串转成 TDesC-转贴
  10. SPRING自定义注入CONTROLLER变量