机器人编程【robot programming】为使机器人完成某种任务而设置的动作顺序描述。机器人运动和作业的指令都是由程序进行控制,常见的
编制方法有两种,
示教编程方法和
离线编程方法。其中示教编程方法包括示教、编辑和轨迹再现,可以通过
示教盒示教和导引式示教两种途径实现。由于示教方式实用性强,操作简便,因此大部分机器人都采用这种方式。离线编程方法是利用
计算机图形学成果,借助
图形处理工具建立
几何模型,通过一些规划算法来获取作业规划轨迹。与示教编程不同,离线编程不与机器人发生关系,在编程过程中机器人可以照常工作。
编辑
用EDIT指令进入
编辑状态后,可以用C、D、E、I、L、P、R、S、T等命令来进一步编辑。如:
C命令:改变编辑的程序,用一个新的程序代替。
D命令:删除从当前行算起的n行程序,n缺省时为删除当前行。
E命令:退出编辑返回监控模式。
I命令:将当前指令下移一行,以便插入一条指令。
P命令:显示从当前行往下n行的程序文本内容。
T命令:初始化关节插值程序示教模式,在该模式下,按一次
示教盒上的“RECODE”按钮就将MOVE指令插到程序中。
列表指令
DIRECTORY指令:此指令的功能是
显示存储器中的全部用户程序名。
LISTL指令:功能是显示任意个位置变量值。
LISTP指令:功能是显示任意个用户的全部程序。
存储指令
STOREP指令:功能是在指定的磁盘文件内存储指定的程序。
STOREL指令:此指令存储用户程序中注明的全部位置变量名和
变量值。
LISTF指令:指令的功能是显示
软盘中当前输入的
文件目录。
LOADP指令:功能是将文件中的程序送入内存。
LOADL指令:功能是将文件中指定的位置变量送入
系统内存。
DELETE指令:此指令撤销磁盘中指定的文件。
执行指令
DO指令:执行单步指令。
EXECUTE指令:此指令执行用户指定的程序n次,n可以从–32 768到 32 767,当n被省略时,程序执行一次。
PROCEED指令:此指令实现在某一步暂停、急停或运行错误后,自下一步起继续
执行程序。
RETRY指令:指令的功能是在某一步出现运行错误后,仍自那一步重新运行程序。
SPEED指令:指令的功能是指定程序控制下机器人的
运动速度,其值从0.01到327.67,一般正常速度为100。
控制指令
STATUS指令:用来显示用户程序的状态。
ENABL指令:用于开、关系统硬件。
ZERO指令:此指令的功能是清除全部用户程序和定义的位置,重新初始化。
程序指令
运动指令
指令包括GO、MOVE、MOVEI、MOVES、DRAW、APPRO、APPROS、DEPART、DRIVE、READY、OPEN、OPENI、CLOSE、CLOSEI、RELAX、GRASP及DELAY等。
这些指令大部分具有使机器人按照特定的方式从一个
位姿运动到另一个位姿的功能,部分指令表示
机器人手爪的
开合。例如:
MOVE #PICK!
表示机器人由关节
插值运动到精确PICK所定义的位置。“!”表示位置变量已有自己的值。
MOVET <位置>,<手开度>
功能是生成关节插值运动使机器人到达位置变量所给定的位姿,运动中若手为
伺服控制,则手由闭合改变到手开度变量给定的值。
又例如:
OPEN [<手开度>]
这些指令包括RIGHTY、LEFTY、ABOVE、BELOW、FLIP及NOFLIP等。
赋值指令
赋值指令有SETI、TYPEI、HERE、SET、SHIFT、TOOL、INVERSE及FRAME。
控制指令
控制指令有GOTO、GOSUB、RETURN、IF、IFSIG、REACT、REACTI、IGNORE、SIGNAL、WAIT、PAUSE及STOP。
其中GOTO、GOSUB实现程序的
无条件转移,而IF指令执行有条件转移。IF指令的格式为
IF <
整型变量1> <关系式> <整型变量2> <关系式> THEN <
标识符>
该指令比较两个
整型变量的值,如果关系状态为真,程序转到标识符指定的行去执行,否则接着下一行执行。
关系表达式有
EQ(等于)、NE(不等于)、LT(小于)、GT(大于)、LE(小于或等于)及GE(大于或等于)。
指令包括SPEED、COARSE、FINE、NONULL、NULL、INTOFF及INTON。
其他指令
其他指令包括REMARK及TYPE。
SIGLA语言
SIGLA是一种仅用于直角坐标式SIGMA装配型机器人
运动控制时的一种
编程语言,是20世纪70年代后期由意大利Olivetti公司研制的一种简单的非文本语言。
这种语言主要用于装配任务的控制,它可以把装配任务划分为一些装配子任务,如取
旋具,在螺钉上
料器上取螺钉A,搬运螺钉A,
定位螺钉A,装入螺钉A,紧固螺钉等。编程时预先编制
子程序,然后用子程序调用的方式来完成。
IML语言
IML也是一种着眼于
末端执行器的
动作级语言,由日本
九州大学开发而成。I
ML语言的特点是编程简单,能
人机对话,适合于现场操作,许多复杂动作可由简单的指令来实现,易被操作者掌握。
IML用 直角
坐标系描述机器人和
目标物的位置和姿态。坐标系分两种,一种是
机座坐标系,一种是固连在机器人作业空间上的工作坐标系。语言以指令形式编程,可以表示 机器人的
工作点、
运动轨迹、目标物的位置及姿态等信息,从而可以直接编程。往返作业可不用
循环语句描述,示教的轨迹能定义成指令插到语句中,还能完成某些 力的施加。
IML语言的主要指令有:运动指令MOVE、速度指令SPEED、
停止指令STOP、手指开合指令OPEN及CLOSE、坐标系定义指令COORD、轨迹定义命令TRAJ、位置定义命令HERE、程序控制指令IF…THEN、FOR EACH语句、
CASE语句及DEFINE等。
任务程序员能够指挥
机器人系统去完成的分立单一动作就是基本程序功能。例如,把工具移动至某一指定位置,操作末端
执行装置,或者从传感器或手调
输入装置读个数等。
机器人工作站的系统程序员,他的责任是选用一套对作业程序员工作最有用的
基本功能。这些基本功能包括运算、决策、通讯、
机械手运动、工具指令以及传感器数据处理等。许多正在运行的机器人系统,只提供机械手运动和工具指令以及某些简单的传感数据处理功能。
1. 运算
在作业过程中执行的规定
运算能力是机器人控制系统最重要的能力之一。
如果机器人未装有任何传感器,那么就可能不需要对机器人程序规定什么运算。没有传感器的机器人只不过是一台适于编程的数控机器。
装有传感器的机器人所进行的一些最有用的运算是
解析几何计算。这些运算结果能使机器人自行做出决定,在下一步把工具或夹手置于何处。
2. 决策
机器人系统能够根据传感器输入信息做出决策,而不必执行任何运算。按照未处理的传感器数据计算得到的结果,是做出下一步该干什么这类决策的基础。这种
决策能力使机器人控制系统的功能更强有力。
3. 通讯
机器人系统与操作人员之间的通讯能力,允许机器人要求操作人员提供信息、告诉操作者下一步该干什么,以及让操作者知道机器人打算干什么。人和机器能够通过许多不同方式进行通讯。
4. 机械手运动
可用许多不同方法来规定机械手的运动。最简单的方法是向各关节伺服装置提供一组关节位置,然后等待伺服装置到达这些规定位置。比较复杂的方法是在机械手
工作空间内插入一些中间位置。这种程序使所有关节同时开始运动和同时停止运动。用与机械手的形状无关的坐标来表示工具位置是更先进的方法,而且(除X-Y-Z机械手外)需要用一台计算机对解答进行计算。在
笛卡儿空间内插入工具位置能使工具端点沿着路径跟随轨迹平滑运动。引入一个参考坐标系,用以描述工具位置,然后让该坐标系运动。这对许多情况是很方便的。
5.工具指令
一个工具控制指令通常是由闭合某个开关或继电器而开始触发的,而继电器又可能把电源接通或断开,以
直接控制工具运动,或者送出一个小功率信号给
电子控制器,让后者去控制工具。直接控制是最简单的方法,而且对控制系统的要求也较少。可以用传感器来感受工具运动及其功能的执行情况。
6. 传感数据处理
用于机械手控制的
通用计算机只有与传感器连接起来,才能发挥其全部效用。我们已经知道,传感器具有多种形式。此外,我们按照功能,把传感器概括如下:
(1) 内体感受器用于感受机械手或其它由计算机控制的关节式机构的位置。
(2)
触觉传感器用于感受工具与物体(工件)间的实际接触。
(3)
接近度或
距离传感器用于感受工具至工件或障碍物的距离。
(4) 力和
力矩传感器用于感受装配(如把
销钉插入孔内)时所产生的力和力矩。
(5)
视觉传感器用于“看见”工作空间内的物体,确定物体的位置或(和)识别它们的形状等。传感数据处理是许多机器人程序编制的十分重要而又复杂的组成部分。
编程语言
于机器人专家来说,最重要的事情是开拓”编程思维”,而不是精通一种特定的编程语言。从很多方面来说,从哪种编程语言开始学习真的无关紧要。机器人编程中最流行的编程语言有BASIC/
Pascal;工业机器人编程语言;
LISP;
硬件描述语言(HDLs);Assembly;
MATLAB;
C#.NET;
Java;
Python;
C/C++。