Conveyor Tracking Short/zh-hans
语言: | [[::Conveyor Tracking Short|English]] • [[::Conveyor Tracking Short/zh-hans|中文(简体)]] |
---|
Contents
关于本文档
本文档介绍了softMC控制器的传送带跟踪功能。 它不提供有关每个命令或属性的详细描述,但可以在softMC-wiki中找到。 主要特点
- 与移动物体进行直接的即时同步
- 外源的隐含接合
- 移动坐标系(移动物体)的相对运动
- 与移动对象的动态重新同步
传送带跟踪概述
传送带跟踪是softMC控制器主要用于包装应用中的的特征,其中机器人末端执行器需要与移动物体同步。 传送带跟踪通常用于两种类型的任务。一种类型的任务是在位于移动的传送带上的容器中,将物品插入或从中提取物品。 机器人必须与传送带一起移动,使其相对于移动物体的运动为零,否则会撞击容器的侧面。另一种类型的任务在位于移动的传送带上拾取物体。 在这个任务中,机器人工具尖端(夹持器)需要与物体接触,只要需要通过机械方式或通过建立足够的吸入压力(真空)来完全抓取它。 传送带有一个运动方向,称为流。上游位置是物体首先“出现”的位置,下游位置是物体不再在机器人范围内的位置。 物体的移动由外部位置变量(MasterSource)监视。 如果在softMC控制下传动装置由驱动器驱动,变量通常是轴位置指令(pcmd)或反馈(pfb)。 如果传送带没有被softMC轴的其中一个驱动,则使用轴(辅助编码器输入)的外部位置信号(pext)。 传送带是一种移动坐标系,它是用于跟踪外部坐标源(如机器人或传送带)的通用数据类型。 因此,在MC-BASIC声明语句中使用移动坐标系。
典型的传送带跟踪设置
典型的传送带跟踪设置如图1所示。
Figure 1. Typical conveyor tracking setup
连接视觉系统
具有视觉系统的传送带跟踪系统如图2所示。
Figure 2. Conveyor tracking with vision system
传送带跟踪系统包括触发位置,通过连接到传送带驱动器的输入探头的传感器来检测移动物体。 当检测到在传送带上移动的物体时,捕获其确切的位置。 同时,视觉系统拍摄快照并计算对象的XYR坐标。
通过知道触发位置与工作窗口开始之间的距离(上游位置),机器人可以定位到传送带(捕获位置+距离偏移)。 一旦物体进入工作窗口,机器人将移动到该位置; 一旦与传送带同步,机器人可以对物体执行动作。
将传送带定义为系统变量
传送带被定义为与机器人模型的点类型相关联的全局数据类型; 它通常在配置文件中定义(CONFIG.PRG):
Common shared <Conveyor Name> as moving frame of <Point Type>
<Conveyor Name>是表示传送带的新变量(对象)的名称。 标准命名规则适用。
<Point Type> 是传送带代表的坐标系的类型。它应该与正在使用的机器人的点类型(例如,XYZ,XYZR,XYZYPR)相同。
例如:
common shared Conv as moving frame of XYZYPR
这将Conv定义为XYZYPR(X,Y,Z,Yaw,Pitch,Roll)类型的传送带。
传送带可以是线性或旋转,由类型属性定义:
<Conveyor Name>.type = n
值:
0 – 线性
1 – 旋转
2 – 非耦合旋转
传送带的驱动变量
驱动传送带的变量是其主源,由MasterSource属性定义,它定义移动传送带的轴(或组)。
该变量可以是诸如轴的位置(例如,位置指令,位置反馈或外部位置)的一维变量。 它也可以是一组独立轴的位置,或者一组完整的位置矢量。
独立位置变量的数量定义了传送带属性ndof,其表示传送带的自由度数。
例如:
Conv.Type = 1 Conv.Ndof = 1 Conv.MasterSource = A1.Pext
该示例表示了由轴1(a1)的外部位置命令驱动的一维线性传送带的声明。 如果传送带由外部电机(即不受softMC控制的电机)启动,则通过将外部编码器物理连接到连接到驱动器(pext)的外部位置输入(辅助编码器)的传送带来测量其运动。
将传送带连接到机器人
在开始传送带跟踪之前,传送带必须通过声明来连接到机器人,例如:
Puma.MasterFrame = conv
该命令建立了传送带和机器人之间的关系(链接),并保持传送带和机器人位置的独立性。 此命令不会激活传送带跟踪。 仅当属性从属设置为5时,实际的传送带跟踪才会开始。
传送带的工作窗口
机器人可以与传送带同步的区域或范围称为工作窗口。 对于线性传送带,它由上游和下游位置定义。 对于旋转传送带,圆形路径由位于上游和下游位置之间的附加点(ArcPoint)定义。 通过将它们的值分配给任何其他位置数据类型(作为表达式或常量)来定义这些点。例如:
Conv.UpStream[1] = #{100,0,0,0,0,0} Conv.DownStream[1] = #{250,0,0,0,0,0}
在这个例子中,线性传送带的工作窗口沿着与X坐标平行的线定义,从X = 100开始,以X = 250结束。
注意,该示例中的索引[1]表示传送带已经被定义为一个自由度(nd = 1)
要定义传送带运动,需要为工作窗口(上游,下游和旋转传送带的ArcPoint)中的每个点分配主坐标。 两个传送带属性UpMaster[1]和DownMaster[1]设置主轴的值,并对应于UpStream和DownStream点。 因此,当主轴处于UpMaster[1]位置时,传送带上的物体处于UpStream点。 这些点被触发位置所抵消,这将在本文后面讨论。)
例如:
Conv.UpMaster[1] = 1000 Conv.DownMaster[1] = 2000
在该示例中(假设偏移为0),当主轴(a1.pext)为1000 (a1.pext = 1000)时,传送带对象位于#{100,0,0,0,0,0}。 当主轴(a1.pext)为2000 (a1.pext = 1000)时,传送带物体位于#{250,0,0,0,0,0}处。这也意味着传送带每1 mm 的主轴单位为1000/150 = 6.66。
Figure 3. Catching the item on a rotary conveyor “MOVES CNV.ZERO”
传送带位置循环
传送带内在的循环。传送带的主位置是不断增加的值,为了获得传送带的周期性,必须引入主轴位置的触发偏移。偏移值由触发命令发出。
例如:
Trigger puma Ndof = 1 Value = 300
在此示例中,触发命令将主轴的主位置偏移300个位置单元。这意味着下一个工作窗口将在主站位置的1300到2300之间。触发器可以缓冲; 最多可以在系统中存储16个触发值。到目前为止输入的触发值的数量可以使用属性<conveyor> .noi进行查询。 每次启动传送带跟踪(slave=5)时,将一个值从触发缓冲区中取出。 每次传送带脱开时,跟踪被分离(slave=0),另一个值从缓冲器中取出。触发是启动跟踪的条件。 触发命令指定用作参考点的主位置。跟踪过程中的所有主位置相对于此点进行重新计算。如果在实际触发和位置更新之间存在延迟,则可以通过向触发命令指定的位置添加偏移来补偿差异。偏移量由用户决定。 触发命令中指定的值作为确定工作窗口的参考,如下例所示。
Figure 4. Master position values
A(UpMaster [1])和B(DownMaster [1])是上下限位置。
X是触发命令中指定的值。
M是当前的主位置。 因此,目前窗口的实际限制:
下限: L = X + A
上限: U = X + B
IsInWindow = (L <= M) 和 (M <= U)
变量监控
以下变量用于监测传送带跟踪过程: <conveyor>.IIW (Is In Window)(0或1)表示机器人是否在工作窗口内。 <robot>.IMFS (Is Motion Frame Synchronized) (0或1)表示机器人是否与传送带完全同步。 <conveyor>.here传送带上的运动物体的实际位置。 <conveyor>.zero是触发后对象出现的工作窗口内的位置。
Figure 5. Working window and monitoring variables
开始传送带跟踪
通过更改机器人的从属性来启动传送带跟踪。 例如: Puma.slave = 5 此命令启动同步过程。 如果没有其他命令生效,则机器人末端执行器将与从属性更改的位置平行移动。 在传送带跟踪中有三个不同的阶段: Synchronization Tracking De-synchronization
Figure 6. Synchronization – De-synchronization sequence during conveyor tracking
第一个阶段是同步。在这个阶段中,机器人试着跟上传送带的位置运动。如果传送带速度太快,机器人不能跟上。
机器人同步的运动学参数为:
puma.velocitySyncTran
puma.accelerationSyncTran
puma.jerkSyncTran
puma.velocitySyncRot
puma.accelerationSyncRot
puma.jerkSyncRot
这些参数都需要设置为比机器人(vtran,...)的标准参数略高的值。 一旦从机从0变为5,同步开始。 在同步期间,<robot> .imfs = 0。一旦机器人与传送带同步,将<robot> .imfs标志设置为1.一旦从属状态改变,传送带上的物体就会开始移动。 这可以通过属性<Conveyor>.here来追踪,这返回传送带运动的位置。 如果物体退出工作窗口,则报告错误,并且传送带跟踪被分离。 一旦完成了移动传送带上的动作,机器人就脱离传送带。 此阶段称为去同步,在此期间<robot> .imfs = 1。去同步参数为:
puma.velocityDeSyncTran
puma.accelerationDeSyncTran
puma.jerkDeSyncTran
puma.velocityDeSyncRot
puma.accelerationDeSyncRot
puma.jerkDeSyncRot
至关重要的是机器人至少要比传送带快两倍。传送带的最大速度和其他限制由以下设定:
Conv.VelocityMaxRot= …
Conv.AccelerationMaxRot = …
Conv.JerkmaxRot= …
这些仅是监视值。 如果超过任何一个,报告错误。
传送带上物体原点的位置
移动对象在工作窗口中出现的位置是通过属性<Conveyor> .zero获取的,该位置是位置数据类型。它表示同步开始时对象的位置; 如果在主位置变得大于<conveyor> .UpMaster [1]之前同步开始,则返回<transport> .UpStream [1]值。
传送带跟踪期间的绝对运动
"机器人总位置"是将机器人的笛卡尔位置转换成关节位置,实际上是发送到运动总线(EtherCAT)上的驱动器的坐标。
传送带跟踪期间的总位置由机器人运动和传送带运动两部分组成。 机器人运动是运动命令(如MOVE和MOVES)引入的坐标变化。 传送带运动是传送带在不同阶段(同步,跟踪,去同步)的运动。 总机器人位置表示为:
Total = Robot + Conveyor
传送带坐标为:
Conveyor(t) = CNV(t) - CNV(t0)
t0是发出 "slave=5" 的时刻
对线性传送带,CNV是:
CNV(t) = (DownStream - UpStream)*(Master(t) - Trigger)/ (DownMaster - UpMaster[1])
Master(t)是t时刻的传送带主轴的位置。
DownStream, Upstream, DownMaster, and UpMaster是传送带参数。
与MC-BASIC变量的关系:
Conv.here = CNV(t)
Conv.zero = CNV(0)
在这背后是,当传送带移动时和传送带静止时,查询/命令的机器人位置是相同的。因此,为了示教传送带上的点,只需停止传送带,并将机器人移动到皮带旁边的目标位置。机器人运动,即主方程中的机器人变量,是机器人在传送带跟踪过程中的绝对位置; 它等于作为运动命令的目标点输入的位置(例如,MOVES / CIRCLE)。