技术猿 | 机器人编程你需要知道的知识


机器人编程为使机器人完成某种任务而设置的动作顺序描述。机器人运动和作业的指令都是由程序进行控制,常见的编制方法有两种,示教编程方法和离线编程方法。其中示教编程方法包括示教、编辑和轨迹再现,可以通过示教盒示教和导引式示教两种途径实现。 由于示教方式实用性强,操作简便,因此大部分机器人都采用这种方式。离线编程方法是利用计算机图形学成果,借助图形处理工具建立几何模型,通过一些规划算法来获取作业规划轨迹。与示教编程不同,离线编程不与机器人发生关系,在编程过程中机器人可以照常工作。工业上离线工具只作为一种辅助手段,未得到广泛的应用。 1.基本命令 用EDIT指令进入编辑状态后,可以用C、D、E、I、L、P、R、S、T等命令来进一步编辑。如: C命令:改变编辑的程序,用一个新的程序代替。 D命令:删除从当前行算起的n行程序,n缺省时为删除当前行。 E命令:退出编辑返回监控模式。 I命令:将当前指令下移一行,以便插入一条指令。 P命令:显示从当前行往下n行的程序文本内容。 T命令:初始化关节插值程序示教模式,在该模式下,按一次示教盒上的“RECODE”按钮就将MOVE指令插到程序中。 列表指令 DIRECTORY指令:此指令的功能是显示存储器中的全部用户程序名。 LISTL指令:功能是显示任意个位置变量值。 LISTP指令:功能是显示任意个用户的全部程序。 存储指令 FORMAT指令:执行磁盘格式化。 STOREP指令:功能是在指定的磁盘文件内存储指定的程序。 STOREL指令:此指令存储用户程序中注明的全部位置变量名和变量值。 LISTF指令:指令的功能是显示软盘中当前输入的文件目录。 LOADP指令:功能是将文件中的程序送入内存。 LOADL指令:功能是将文件中指定的位置变量送入系统内存。 DELETE指令:此指令撤销磁盘中指定的文件。 COMPRESS指令:只用来压缩磁盘空间。 ERASE指令:擦除磁内容并初始化。 控制程序执行指令 ABORT指令:执行此指令后紧急停止(紧停)。 DO指令:执行单步指令。 EXECUTE指令:此指令执行用户指定的程序n次,n可以从–32 768到 32 767,当n被省略时,程序执行一次。 NEXT指令:此命令控制程序在单步方式下执行。 PROCEED指令:此指令实现在某一步暂停、急停或运行错误后,自下一步起继续执行程序。 RETRY指令:指令的功能是在某一步出现运行错误后,仍自那一步重新运行程序。 SPEED指令:指令的功能是指定程序控制下机器人的运动速度,其值从0.01到327.67,一般正常速度为100。系统状态控制指令 CALIB指令:此指令校准关节位置传感器。 STATUS指令:用来显示用户程序的状态。 FREE指令:用来显示当前未使用的存储容量。 ENABL指令:用于开、关系统硬件。 ZERO指令:此指令的功能是清除全部用户程序和定义的位置,重新初始化。 DONE:此指令停止监控程序,进入硬件调试状态。 2.程序指令 1) 运动指令 指令包括GO、MOVE、MOVEI、MOVES、DRAW、APPRO、APPROS、DEPART、DRIVE、READY、OPEN、OPENI、CLOSE、CLOSEI、RELAX、GRASP及DELAY等。 这些指令大部分具有使机器人按照特定的方式从一个位姿运动到另一个位姿的功能,部分指令表示机器人手爪的开合。例如: MOVE #PICK! 表示机器人由关节插值运动到精确PICK所定义的位置。“!”表示位置变量已有自己的值。 MOVET <位置>,<手开度> 功能是生成关节插值运动使机器人到达位置变量所给定的位姿,运动中若手为伺服控制,则手由闭合改变到手开度变量给定的值。 又例如: OPEN [<手开度>] 表示使机器人手爪打开到指定的开度。 2) 机器人位姿控制指令 这些指令包括RIGHTY、LEFTY、ABOVE、BELOW、FLIP及NOFLIP等。 3) 赋值指令 赋值指令有SETI、TYPEI、HERE、SET、SHIFT、TOOL、INVERSE及FRAME。 4) 控制指令 控制指令有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(大于或等于)。 5) 开关量赋值指令 指令包括SPEED、COARSE、FINE、NONULL、NULL、INTOFF及INTON。 6) 其他指令 其他指令包括REMARK及TYPE。 机器人语言 SIGLA语言 SIGLA是一种仅用于直角坐标式SIGMA装配型机器人运动控制时的一种编程语言,是20世纪70年代后期由意大利Olivetti公司研制的一种简单的非文本语言。 这种语言主要用于装配任务的控制,它可以把装配任务划分为一些装配子任务,如取旋具,在螺钉上料器上取螺钉A,搬运螺钉A,定位螺钉A,装入螺钉A,紧固螺钉等。编程时预先编制子程序,然后用子程序调用的方式来完成。 IML语言 IML也是一种着眼于末端执行器的动作级语言,由日本九州大学开发而成。IML语言的特点是编程简单,能人机对话,适合于现场操作,许多复杂动作可由简单的指令来实现,易被操作者掌握。 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)视觉传感器用于“看见”工作空间内的物体,确定物体的位置或(和)识别它们的形状等。传感数据处理是许多机器人程序编制的十分重要而又复杂的组成部分。

原文发布于微信公众号 - 机器人网(robot_globalsources)

原文发表时间:2015-05-27

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏大学生计算机视觉学习DeepLearning

c语言课程设计之贪吃蛇代码及思路

5897
来自专栏瓜大三哥

yaffs_bitmap

1.static inline u8 *yaffs_block_bits(struct yaffs_dev *dev, int blk)//计算给定块的字节数 ...

1885
来自专栏开源优测

[大数据测试]ETL测试或数据仓库测试入门

概述 在我们学习ETL测试之前,先了解下business intelligence(即BI)和数据仓库。 什么是BI? BI(Business Intelli...

2774
来自专栏iOSDevLog

聊天机器人教学:使用Dialogflow (API.AI)开发 iOS Chatbot App

9923
来自专栏开源优测

[大数据测试]ETL测试或数据仓库测试入门

概述 在我们学习ETL测试之前,先了解下business intelligence(即BI)和数据仓库。 什么是BI? BI(Business Intell...

3826
来自专栏小文博客

用Python画一个中国地图【转】

1803
来自专栏程序人生

数据:逍遥游

对程序员来说,数据是我们时刻都在打交道的东西。我们的代码如同一台机器,把进入的数据转换或者映射成出来的数据。数学上,不过是:y = f(x) 而已。数据就像庄子...

1474
来自专栏开源优测

[大数据测试]ETL测试或数据仓库测试入门

概述 在我们学习ETL测试之前,先了解下business intelligence(即BI)和数据仓库。 什么是BI? BI(Business Intell...

3756
来自专栏chafezhou

分享自用的两个网站

1554
来自专栏养码场

一位资深Java的阿里系公司实战面试经验,套路还是面试官的多

占小狼:一位奋斗在魔都的资深Java开发。去年6月在简书上发第一篇技术文章,已坚持发表76篇技术文章,粉丝数突破4000。

2277

扫码关注云+社区

领取腾讯云代金券