
1.3.5 机器人的编程语言
给机器人编程是有效使用机器人的前提。由于机器人的控制装置和作业要求多种多样,国内外尚未制订统一的机器人控制代码标准,所以编程语言也是多种多样的。
机器人语言种类繁多,而且新的语言层出不穷。这是因为机器人的功能不断拓展,需要新的语言来配合其工作。另一方面,机器人语言多是针对某种类型的具体机器人而开发的,所以机器人语言的通用性很差,几乎一种新的机器人问世,就有一种新的机器人语言与之配套。
机器人语言可以按照其作业描述水平的程度分为动作级编程语言、对象级编程语言和任务级编程语言三类。
1.动作级编程语言
动作级编程语言以机器人末端执行器的动作为中心来描述各种操作,要在程序中说明每个动作。这是一种最基本的描述方式。
动作级编程语言是最低一级的机器人语言。它以机器人的运动描述为主,通常一条指令对应机器人的一个动作,表示从机器人的一个位姿运动到另一个位姿。动作级编程语言的优点是比较简单,编程容易。其缺点是功能有限,无法进行复杂的数学运算,不接受浮点数和字符串,子程序不含自变量;不能接受复杂的传感器信息,只能接受传感器开关信息;与计算机的通信能力很差。
典型的动作级编程语言为VAL语言,如VAL语言语句“MOVE TO(destination)”的含义为机器人从当前位姿运动到目的位姿。
动作级编程语言编程时分为关节级编程和末端执行器级编程两种。
(1)关节级编程
关节级编程是以机器人的关节为对象,编程时给出机器人一系列各关节位置的时间序列,在关节坐标系中进行的一种编程方法。
对于直角坐标型机器人和圆柱坐标型机器人,由于直角关节和圆柱关节的表示比较简单,这种方法编程较为适用;而对具有回转关节的关节型机器人,由于关节位置的时间序列表示困难,即使一个简单的动作也要经过许多复杂的运算,整个编程过程很不方便,故这一方法并不适用。
关节级编程得到的程序没有通用性,因为一台机器人编制的程序一般难以用到另一台机器人上。这样得到的程序也不能模块化,它的扩展也十分困难。
关节级编程可以通过简单的编程指令来实现,也可以通过示教盒示教和键入示教实现。
(2)末端执行器级编程
末端执行器级编程是一种在作业空间内各种设定好的坐标系里编程的编程方法。末端执行器级编程程序给出机器人终端执行器的位姿和辅助机能的时间序列,包括力觉、触觉、视觉等机能以及作业用量、作业工具的选定等。
这种语言的指令由系统软件解释执行。可提供简单的条件分支,可应用于程序,并提供较强的感受处理功能和工具使用功能,这类语言有的还具有并行功能。
这种语言的基本特点是:1)各关节的求逆变换由系统软件支持进行;2)数据实时处理且超前于执行阶段;3)使用方便,占内存较少;4)指令语句有运动指令语句、运算指令语句、输入输出和管理语句等。
2.对象级编程语言
对象级编程语言解决了动作级编程语言的不足,它是描述操作物体间关系使机器人动作的语言,即以描述操作物体之间的关系为中心的语言。使用这种语言时,必须明确地描述操作对象之间的关系和机器人与操作对象之间的关系,它特别适用于组装作业。
所谓对象即作业及作业物体本身。对象级编程语言是比动作级编程语言高一级的编程语言,它不需要描述机器人手爪的运动,只要由编程人员用程序的形式给出作业本身顺序过程的描述和环境模型的描述,即描述操作物与操作物之间的关系。通过编译程序机器人即能知道如何动作。
这类语言典型的例子有AML及AUTOPASS等语言,其特点如下
1)运动控制:具有动作级编程语言的全部动作功能。
2)处理传感器信息:可以接受比开关信号复杂的传感器信号,有较强的感知能力,能处理复杂的传感器信息,可以利用传感器信息来修改、更新环境的描述和模型,也可以利用传感器信息进行控制、测试和监督。
3)扩展性:具有良好的开放性,语言系统提供了开发平台,用户可以根据需要增加指令,扩展语言功能。
4)通信和数字运算:数字计算和数据处理能力强,可以处理浮点数,能与计算机进行即时通信。
对象级编程语言以近似自然语言的方式描述作业对象的状态变化,指令语句是复合语句结构;用表达式记述作业对象的位姿时序数据及作业用量、作业对象承受的力、力矩等时序数据。
系统中机器人尺寸参数、作业对象及工具等参数一般以知识库和数据库的形式存在,系统编译程序时获取这些信息后对机器人动作过程进行仿真,再进行确定作业对象合适的位姿,获取传感器信息并处理,回避障碍以及与其他设备通信等工作。
3.任务级编程语言
任务级编程语言是一种比前两类更高级的语言,也是最理想的机器人高级语言。这类语言允许使用者对工作任务所要求达到的目标直接下命令,不需要规定机器人所做的每一个动作的细节。只要按某种原则给出最初的环境模型和最终工作状态,机器人可自动进行推理、计算,最后自动生成机器人的动作。为此,机器人必须一边思考一边工作。
这类语言不需要用机器人的动作来描述作业任务,也不需要描述机器人对象的中间状态过程,只需要按照某种规则描述机器人对象的初始状态和最终目标状态,机器人语言系统即可利用已有的环境信息和知识库、数据库自动进行推理、计算,从而自动生成机器人详细的动作、顺序和数据。
任务级编程语言的概念类似于人工智能中程序自动生成的概念。任务级机器人编程系统能够自动执行许多规划任务。任务级机器人编程系统必须能把指定的工作任务翻译为执行该任务的程序。
例如,一装配机器人欲完成某一螺钉的装配,螺钉的初始位置和装配后的目标位置已知,当发出抓取螺钉的命令时,语言系统从初始位置到目标位置之间寻找路径,在复杂的作业环境中找出一条不会与周围障碍物发生碰撞的合适路径,在初始位置处选择恰当的姿态抓取螺钉,沿此路径运动到目标位置。在此过程中,作业方案的设计、工序的选择、动作的前后安排等一系列问题都由计算机自动完成。
任务级编程语言的结构十分复杂,需要人工智能的理论基础和大型知识库、数据库的支持,目前还不是十分完善,是一种理想状态下的语言,有待于进一步的研究。但可以相信,随着人工智能技术及数据库技术的不断发展,任务级编程语言必将取代其他语言而成为机器人语言的主流,使得机器人的编程应用变得十分简单。
现在还有人在开发一种系统,它能按某种原则给出最初的环境状态和最终的工作状态,然后让机器人自动进行推理、计算,最后自动生成机器人的动作。这种系统现在仍处于基础研究阶段,还没有形成机器人语言。