#$%$#&’ 机器人示教系统的组成 (!) 示教系统的设置 示教前的系统设置包括: 零位标定 !) 特殊点设置 ) 控制 0) 器时钟设置 () 干涉区域设置 ,) 操作原点设置 -) 工具参数标定 用户坐标设置 /) 文件初始化等。限于篇幅, 本文只介绍机器 .) 人的 “零位 标 定” : 首先利用示教盒切换到管理模式 ( #67689 下, 按照操作顺序选取 [%$) #’=] 、 接着选取 [ 5$$%] 菜 #:;9) 单的 [?$# )$2@%@$’] 子菜单, 然后将机器人移动到零位, 选取 所有的轴 (&** 5$$% &4@2) , 实现零位标定 (注: 零位也就是关 节脉冲为零的位置, 作为以后输入脉冲的基准) , 其他设置方法 与此类似。 () 示教程序的输入 ’$) #$3A 3A B 0C 1 CC %@#5 % B 0 1 CC (0)$’ D$=% $% E #$3* )CCC 3 B !.%@#5 % B 0 1 CC (0)$’ D$=% $% E &** A$: %2% ’D 示教前, 需要打开控制器再现面板上的伺服电源、 选取示教 模式, 同时点亮示教盒上的示教锁。登录示教作业名后, 系统自 动为程序加上两行语句: “’$)” 、 “ ’D” 以作为程序的开始和结 束标志。按住示教盒背面的三位开关当伺服电源停止闪烁时, 在某一坐标系下 (可以从关节、 直角、 工具或用户坐标系中选取) 移动机械手至某一位姿后输入示教指令, 编辑指令参数, 回车, 此时系 统 将 记 录 当 前 位 姿 参 数, 以 便 回 放 再 现 时 调 用。 #$F 属于动作级编程语 %$#&’ 机器人采用的编程语言为 @’G$5#@@, 言 (参见 “机器人示教指令程序” ) , 具有上文介绍的机器人语言 指令功能。不一样的机器人指令仅在指令的具体表述上有差 异。#$3A、 前者指关节插 #$3* 描述了回放时的轨迹插补方式: 补、 后者指直线 描述了定时时间, 通过调用 “ D$=% (0)$’ H $GG” 实现工具的开关, $% E &** 语句则可以调用其他
规定机器人进行应该完成的动作和作业的详细的细节内容。这样的一个过程 就称为对机器人的示教或对机器人的编程。对机器人的示教有 不同的方法, 要想让机器人实现人们所期望的动作, 必须赋予机 器人各种信息, 首先是机器人动作顺序的信息及外部设备的协 调信息; 其次是与机器人工作时的附加条件信息; 再次是机器人 的位置和姿态信息。前两个方面非常大程度上是与机器人要完成 的工作和相关的工艺要求有关, 位置和姿态的示教通常是机 器人示教的重点。
的作业程序。示教完成后, 需要关闭示教盒上的示教锁, 并切换 至再现模式, 回放前, 同样需要打开伺服电源, 最后启动回放示 教过程。 !# 虚拟示教方法
[$] , 微机 目前随着计算机性能的提高, 虚拟现实技术的发展 [, ,] 虚拟 示 教 已 成 为 现 实。 %&’()* 图 形 生 成 技 术 、 -./01* [4] 是实现机器人建模、 建立人机交互界面 2 3 3 可视化编程语言 的重要手段。市面上流形的带有力反馈的游戏操纵杆可以实现
示教, 而随着计算机虚拟现实技术的加快速度进行发展, 出现了虚拟示教 编程系统。位姿示教框图见图 。
人们一般按照作业描述水平的高低将机器人语言分为三类: 动 作级、 对象级和任务级。其中动作级语言是以机器人的运动作 图 !K 直接示教 所谓直接示教, 就是指我们一般所说的手把手示教, 由人直 接搬动机器人的手臂对机器人进行示教, 如示教盒示教或操作 杆示教等。在这种示教中, 为了示教方便以及获取信息的快捷 而准确, 操作者可以再一次进行选择在不同坐标系下示教, 例如, 可以再一次进行选择 在关节坐标系 ( L536 M55AD36?@=) 、 直角坐标系 ( N@H?679C?A M55AD3O 以及工具坐标系 (’55C M55AD36?@=) 或用户坐标系 (P=@A M55AO 6?@=) 下进行示教。 D36?@=) ! K ! 离线示教 离线示教与直接示教不同, 操作者不对实际作业的机器人 直接进行示教, 而是脱离实际作业环境生成示教数据, 间接地对 机器人进行示教。在离线示教法 (离线编程) 中, 利用计算 位姿示教框图 为描述中心, 由一系列命令组成, 一般一个命令对应一个动作, 语言简单, 易于编程, 缺点是不可以进行复杂的数学运算。而对象 级语言是以描写操作物之间的关系为中心的语言。相比较而言 任务级是比较高级的机器人语言, 这类语言允许使用者对工作 任务要求达到的目标直接下命令, 不需要规定机器人所做的每 一个动作的细节。只要按某种原则给出最初的环境模型和最终 的工作状态, 机器人可自动进行推理计算, 最后生成机器人的动 作。 .K! 机器人语言系统的组成 机器人语言系统构成如图 ! 所示。 从模块化的思想考虑, 机器人语言系统最重要的包含以下几种 模块: ()主控程序模块 对来自示教盒 U 面板的请求给予相应的服务。 #/
图 ! 机器人语言系统构成 任务的调度安排。 ! (!) 运动学模块 此模块是机器人运动的关键, 包括机器人运动学的正、 反解 以及路径规划, 完成机器人的关节、 直线、 圆弧插补功能。 () 外设控制模块 实现对机器人系统有关的外围设备的控制。 (() 通信模块 支持主机和示教盒、 )* 及伺服单元的通信。 (,) 管理模块 提供方便的机器人语言示教环境; 支持对示教程序的示教、 编辑 (插入、 删除、 拷贝) 、 装入、 存储等操作; 完成系统各功能之 间的切换。 (-) 机器人语言解释器模块 对机器人语言的示教程序进行编译、 扫描及语言法检查, 最 后解释执行。 (.) 示教模块 利用示教盒来改变操作机末端执行器的位置和姿态。 (/) 报警模块 对出错信息的处理及响应。
( 234) 、 机器人控制柜 本系统 主 要 由 - 自 由 度 机 械 手 (45) 、 示教盒、 上位计算机和输入装置组成。控制柜与机械 手、 微机、 示教盒间均通过电缆连接, 输入装置 (游戏操纵杆) 连 接到了微机的并行端口 *)% (或声卡接口) 上, 如图 所示。
逼真的示教输入操作。 ($)%567)* 开发技术基础 一定要保证在系统的 $)在 897:;= 4 ? (@ 中使用 %567)* 时, ? =A=B6C 目录下应该有 ;567DEF# :EE 和 DEGF# :EE 两个动态连接库, 它是 %567)* 程序运行的基础。另外在 -2 3 3 的 *.H 目录下包 含 ;567DE E9I、 DEGF# E9I 库文件, .7JEG:6 目录下包含 DE K、 DEG K、 这些头文件提供了对 %567)* 函数的声明。 #) DELGM K 头文件, 绘图前必须首先设置像素格式, 包含 %567)* 设备绘图界面的属 性, 如颜色模式、 颜色位数、 缓存类型以及模板缓存位数等。F、 需要创建图形操作描述表, 接着启用图 在调用 %567)* 函数前, 形操作 描 述 表, 在 不 删 除 该 操 作 描 述 表 前, 可以调用任意 %567)* 函数进行图形图像处理。 (#) 机器人屏幕图像的生成过程 机器人屏幕图像的生成过程需要经过以下四步: 物体建 $) 模: 在 %567)* 中使用点、 线、 多边形、 图像和位图等图元和数学 描述来合成机器人的几何框架, 这一步是产生 %567)* 图像的基 础。#) 视点设置和物体变换: 首先在三维空间中放置物体, 其中 包括视点和视角的设置, 用于控制物体的显示角度; 然后就可以 对物体做相应的变换, 例如: 旋转、 平移、 放大和缩小等。F) 计算 物体颜色: 例如物体表面材质、 纹理以及光照条件等, 物体的最 终颜色由这几部分计算得到。N) 屏幕光栅化: 把物体形状和颜 色信息转换成屏幕像素值。 (F) 游戏杆编程 微软公司在 897:;= 4 ? (@ 操作系统基础上推出的 O9P6JBQ 图形加速程序和开发工具包提供了对媒体硬件设备的直接存取 能力及对多媒体的支持。 O9P6JB.75GB 属于 O9P6JBQ 的 组 件 之 一, 它提供了对游戏操纵杆和其他输入设备 (如键盘、 鼠标等) 的 访问。 O9P6JB.75GB 由 三 个 对 象 组 成: O9P6JB.75GB、 O9P6JB.75GBO6R9J6 和 O9P6JB.75GB’SS6JB。O9P6JB.75GB 是一个高层对象, 通过 O9P6JB.75GB 对象可以对相关的输入设备做初始化和查找。 O9P6JB.75GB 对 象最终用来创建低层的 O9P6JB.75GBO6R9J6 对象。 O9P6JB.75GBO6R9J6 对象是与物理输入设备 (游戏杆) 的接口, 包括收集、 设置设备状 态信息, 并用来创建力反馈设备 O9P6JB.75GB’SS6JB 对象。而 O9P6JBT 提 .75GB’SS6JB 对象封装能够在力反馈设备上U 播放U 的简单效果, 供启动、 停止和设置力反馈效果等功能。将此功能用在机器人 虚拟示教过程中, 可以产生强列的虚拟现实和震撼力。 (N) 示教指令的解释 在线 示 教 过 程 中 示 教 指 令, 诸 如: V%-W、 V%-*、 V%-2、 由图 # 中所示的机器人语言解释器负责解释、 @.V’X、 O%0@ 等, 编译, 虚拟示教系统的上述指令, 类似地也由一段解释代码的程
序来执行, 尤其前三个指令, 均属于轨迹规划方面的指令。反应 在回放时, 机器人在示教点间走的中间路线: 直线、 圆弧或者按 照关节插补方式运动。由于篇幅所限, 本文不作介绍, 读者可以
示教界面设计 (!) 利用 -9=GLE 2 3 3 编程时, 我们采用了基于 VY2 的 2 3 3 编 程方式, 通过 2EL==89ZLP: 类向导、 15589ZLP: 应用程序向导的配 合编程缩短了编程时间。其中消息响应机制、 不同类对 1&. 接 口函数的封装以及类的继承性, 使得编程难度大为降低。 在示教界面的设计上, 能够使用多种资源方式: 对话框、 菜 单、 工具条等来实现, 属于常规操作。编程时重点要解决好不同 类成员变量间的数据交换、 操纵杆的输入输出、 文件的读写操作 等。其中文件读写能够实现示教关键点的位姿记录、 文件名操 作、 回放再现以及生成机器人作业文件 ( ! WH.) 等。利用定时 操作函数 /6B@9C6P ( 0.(@ 7.O’R67B,0.(@ 7’EL5=6 ) 或用多线程技 术编程能轻松实现对操纵杆输入数据的定时采样及其对操作者实 施实时力反馈。
境定义功能、 运算功能、 程序控制功能、 输入、 输出功能等。 运动控制功能是其中很重要的一项功能, 机器人运动轨 迹的控制方式有两种: ) 控制方式和 )%) 控制方式。无论采用 哪一种控制方式, 目前工业机器人语言大多数以动作顺序为中 心, 利用示教这一功能, 省略了作业环境内容的位置姿态的 计算。具体而言对机器人运动控制的功能可分为: 0)运动速度 设定 !)轨迹插补方式 (分为: 关节插补、 直线插补以及圆弧插 补))动作定时 ()定位精度的设定以及 ,) 手爪、 焊枪等工具 的控制等。除此之外还包括工具变换、 基本坐标设置和初始值 的设置、 作业条件的设置等功能, 这些功能的实现往往在具体的 程序编制中体现。
...