UR 控制器有两个主要的软件程序,这对URCap的操作非常重要,理解他们之间的相互作用可以给我们URCap的开发起到事半功倍的效果。
-
Polyscope
PolyScope是UR机器人的图形编程界面, 他为用户提供了一个图形化的界面来编写机器人程序以及和机器人实现交互。URCap是一个的插件, 以OSGI的bundles的形式存在于PolyScope中。
-
URControl
是一个实时的控制器,他控制机器人的运动并执行机器人的程序。 事实上, URControl从PolyScope接收所需的脚本指令程序, 并将其转换为各个关节需要遵循的命令。
当用户在PolyScope中开发他们的程序时, 需要考虑两个主要的编程区域, 分别是程序节点和安装节点, URCaps可以对这两部分进行贡献。
- Program Node 程序节点
程序节点如图红色框中的Waypoint就是一个内置程序节点,程序节点在程序树(绿色框)中排序,确定机器人运行程序时执行的顺序。每一个程序节点都有一个界面如图黄色框, URCap的开发可以在这个界面添加URCap程序节点需要执行的一些动作,如控制夹爪的开合, 控制相机的拍照等
程序节点应该用于在应用程序中特定时间发生的命令。 通常被设计成发生在程序执行的每一次序列中,而并非一个一个只需要初始化一次的命令。 例如夹爪的开合控制命令应该在程序节点中,而相机的校准不应该在程序指令中。
当程序节点被放置在程序序列中的时候,被存储在一个.URP文件中。
- Installation Node 安装设置节点
安装设置节点在Installation (安装) 界面下, 一个安装设置节点如图红色区域所示 安装节点的内容包含机器人工具的设置,安装位置的设置,以及跟周边环境通讯配置的设置等。 他们是没有顺序的,并且可以在途中的绿色框内进行配置选项。 例如:内置的程序节点,包含了工具中心点,负载的设置,安轩系统的配置,空间坐标系的设置以及现场总线的设置。
安装节点不同于程序节点,程序节点添加到程序树之后作用在每一次程序循环中,安装节点通常对应于机器人所在的物理位置,即机器人环境。可以使用多个安装节点,每个安装节点都可以反应机器人处于特定环境下的设置。
对于URCap, 安装节点通常用于基本配置(IP地址和到外部设备的连接配置)。 已安装的硬件或连接的配置(如末端执行器的安装Tcp位置和负载),IO。
安装节点可以将程序代码提交到程序最开始的部分, 因此他们也很适合初始化硬件或程序节点使用的常变量。
安装节点保存在安装文件(.install)中,默认情况下, 该文件称为"default"。 用户也可以自己定义安装名称。
- 流程控制
当用户使用程序节点及和安装节点构建程序时, 每个节点都将信息包含在一个DataModel对象中, 数据模型反应用户配置的特定节点配置。 当用户最终希望通过按下Play按钮来执行程序的时候, 程序和安装节点中出现的每个节点都将被问询他们贡献的URScript代码。 而URControl最终接受的是URScript的执行代码、
因此无论安装节点还是程序节点的主要目标是能够基于用户配置生成这样的URScript。
其中,安装节点向主程序前提供脚本, 而程序节点在主程序中各自的位置生成脚本。
如上面的例子,安装节点的TCP和Mount分别提供了配置robot工具中心点和负载的URScript,而这些参数的配置是在各自的安装节点界面中完成。 还根据Mounting里面机器人安装位置的设置定义了重力的方向。
然后, 每个程序节点在程序中各自的位置贡献一行或者几行URScript, 父节点(Robot程序 或者是IF 语句) 可以在其子节点之前和之后添加URScript。 例如, 对于If 语句, 他添加if 代码,然后允许其他子节点添加他们的代码,在本例中是一个move—node的waypoint, 最后再添加end语句来闭合if语句。
leaf node(叶子节点), 例如waypoint(路点) 或者 Set(设置)节点, 只能在他们自己的位置添加代码,因此分别添加一个move-command 和一个script命令来切换数字输出。
Move-Node 本身没有想程序添加任何脚本,但是Move-Node包含任何way-point-child-node 的通用参数。在本例子中定义了加速度为1.2m/s^2 的运动参数和速度为0.5m/s
在所有安装节点和程序节点都构建了自己的URScript之后,PolyScope将把完整的脚本合并到一个程序定义中。将安装节点URScript放在pre-amble中(用于初始化),然后构建由程序节点组成的程序。 这个完整的URScript被发送到URControl。它负责实际执行这段代码,最终使机器人移动,并执行程序中包含的其他任务。
URControl和PolyScope使用主客户端接口(端口30001)进行通信。
PolyScope通过向URControl发送脚本程序,URControl不断地将机器人的信息传回PolyScope,在用户界面中进行描绘。
当用户按下Play, PolyScope已经收集了每个节点的URScript代码,完整的脚本将作为一个程序使用主客户端接口发送到URControl。
当URControl收到URScript代码后,URControl将开始逐行执行脚本代码。
通常,程序的程序节点部分将永远循环,使URControl重复该特定序列一次又一次,直到用户决定终止程序。
当程序运行时,没有与URCap节点的交互,因此应该在运行时执行的所有操作都应该在URScript中执行。
有时根据需求, 为了在运行时执行定制的代码, URCap 可以添加Daemon服务, Daemon进程服务可以与Polyscope和URControl并行运行。 在这个方面,URScript可以使用诸如xml—rpc或者Tcp socket调用daemon service。