Difference between revisions of "Element Coordination/zh-hans"

From SoftMC-Wiki
Jump to: navigation, search
(Created page with "{{Languages}} = Introduction = The main goal of this feature is to synchronize both in space and in time movement of several robots together. This will be done using the sta...")
 
Line 1: Line 1:
 
{{Languages}}
 
{{Languages}}
= Introduction =  
+
= 介绍 =  
  
The main goal of this feature is to synchronize both in space and in time movement of several robots together. This will be done using the standard master-slave relationship that exists in the system by expanding it into a general robot-to-robot connection. The feature that is going to be used is the '''Moving Frame Feature''' typically used in '''conveyor tracking'''.The source of the moving frame will be extended from simple axes list to any robot type cartesian command (SETPOINT, HERE).
+
此功能的主要目标是几个机器人的空间和时间上运动同步。这将使用系统中存在的标准主 - 从关系将其扩展为通用机器人到机器人连接。将要使用的功能是'''移动坐标系特性''',通常用于'''传输带跟踪'''。移动坐标系的源将从简单的轴列表扩展到任何机器人类型的笛卡尔命令(SETPOINT,HERE)。
  
The master robot is the master source of a moving frame that the slave robot follows. Same synchronization algorithms will be used except the issues related to the tracking window and triggering (these two will be irrelevant).
+
主机器人是从机器人跟随的移动坐标系的主源。 将使用相同的同步算法,除了与跟踪窗口和触发相关的问题(这两个将是无关紧要的)。
  
Relative movements of the slave robot during tracking are allowed and executed in the same way as in regular conveyor tracking.
+
跟踪期间从机器人的相对运动是允许的,在常规的输送机跟踪以相同的方式执行。
  
The robot's mutual space-relationship will be defined through newly-added base and object location offsets of the moving frame. Together with it, mutual coordination of robots of different point types (world(robot) frame) and/or different NDOF's will be possible.
+
机器人的相互空间关系将通过新添加的基坐标系和移动坐标系的对象位置偏移来定义。 与此同时,可以实现不同点类型(世界(机器人)框架)和/或不同NDOF的机器人的相互协作。
  
  
{{Note/Important| Only in case of robot's with same point-types the complete location will be used (position+orientation). In case of robots with different point-types only the positional part (X, Y, Z) of the master-robot location will be tracked. Orientation angles (Yaw, Pitch, Roll) '''will be ignored'''}}
 
  
 +
{{Note/Important| 只有在机器人具有相同点类型的情况下,才能使用完整的位置(位置+姿态)。 在具有不同点类型的机器人的情况下,仅跟踪主机器人位置的位置部分(X,Y,Z)。 姿态角(Yaw,Pitch,Roll)将 '''被忽略 '''}}
  
{{Note/Important| In case of robot's with same point-types user is able to select if tracking is done on position '''or''' orientation coordinates only or on '''both''' of them. See [[MC-Basic:movingFrame.TYPE|MovingFrame.type]] property}}
 
  
 +
{{Note/Important| 在具有相同点类型的机器人的情况下,用户能够选择是仅仅在位置或姿态坐标上进行跟踪或者在两者上进行跟踪。请参阅[[MC-Basic:movingFrame.TYPE|MovingFrame.type]]属性。}}
  
{{Note| Axes' position limits and acceleration/velocity thresholds are checked (monitored) during tracking in the same way as in regular conveyor tracking }}
 
  
 +
{{Note| 在跟踪期间检测(监控)轴的位置限制和加速度/速度阈值,方式与常规传送带跟踪相同。 }}
  
{{Note/Danger|It is important to emphasize that this feature (Element Coordination using robot-based Moving Frame) does '''not''' prevent robot collisions. Robot collision prevention is completely out of this topic.}}
 
  
= System Setup =
+
{{Note/Danger|需要重要强调的是此功能(使用基于机器人的运动坐标系的元素协作)'''不会'''阻止机器人碰撞。 机器人防碰撞完全脱离了这个主题。}}
  
== Data Creation ==
+
= 系统设置 =
  
There are two kinds of Moving Frame (MF) objects in ControlStudio: axis-based and robot-based.
+
== 数据创建 ==
Both of them are created in the same way as axes-based  means using the command:<br>
+
 
 +
ControlStudio中有两种运动参考系(MF)对象:基于轴和基于机器人。它们都以与使用该命令的基于轴的方式以相同的方式创建:<br>
  
 
<center>'''COMMON SHARED <mf name> as moving frame of <mf-type>'''</center><br>
 
<center>'''COMMON SHARED <mf name> as moving frame of <mf-type>'''</center><br>
  
The difference between <u>axes-based</u> and <u>robot-based</u> moving frames is in the argument supplied to the '''[[MC-Basic:movingFrame.MASTERSOURCE| MasterSource]]''' command. In <u>axis-based</u> MF's only axes as master sources are used. Also,in the <u>axis-based</u> MF's the point-type of all location-MF's properties ''(Zero, Here, Upstream, DownStream)'' are same as point type of the MF (i.e. <mf-type>).<br>
+
基于轴和基于机器人的运动参考系之间的差异在提供给 '''[[MC-Basic:movingFrame.MASTERSOURCE| MasterSource]]''' 命令的参数中。在<u>基于轴<u>的MF中,仅使用主轴作为主源。此外,在<u>基于轴<u>的MF中,所有位置MF的属性(零,此处,上行,下行)的点类型与MF的点类型(即<mf-type>)相同。<br>
  
In <u>robot-based</u> MF's master-source is a robot element with its own point-type. In <u>robot-based</u> MF's  the relation between MF's locations and the robot's locations will be defined using the newly introduced properties. ''(See: Translation Transformation )''
+
<u>基于机器人</u> 的MF的主源是具有自己的点类型的机器人元素。在<u>基于机器人<u>的MF中,MF的位置和机器人的位置之间的关系将使用新引入的属性来定义。 ''(参考: Translation Transformation )''
  
== Master Source ==
+
== 主源 ==
  
[[MC-Basic:movingFrame.MASTERSOURCE|<Moving Frame>.MasterSource]] property will allow adding robot element's  command (setpoint) or feedback(here) locations as masters, the following sytnax will be valid:
+
[[MC-Basic:movingFrame.MASTERSOURCE|<Moving Frame>.MasterSource]]属性将允许将机器人元素的命令(setpoint)或反馈(here)添加为主站,以下句法将有效:
  
 
[[MC-Basic:movingFrame.MASTERSOURCE|<Moving Frame>.MasterSource]] = <robot>.setpoint
 
[[MC-Basic:movingFrame.MASTERSOURCE|<Moving Frame>.MasterSource]] = <robot>.setpoint
Line 43: Line 43:
 
[[MC-Basic:movingFrame.MASTERSOURCE|<Moving Frame>.MasterSource]] = <robot>.here
 
[[MC-Basic:movingFrame.MASTERSOURCE|<Moving Frame>.MasterSource]] = <robot>.here
  
{{Note| The point-type of the '''master''' <robot> does not have to match the point-type of the <nowiki><moving frame></nowiki>! <br> However the type of the <nowiki><moving frame></nowiki> and the '''slave''' robot must match!}}
+
{{Note|'''master'''<robot>的点类型不必与<nowiki><moving frame></nowiki>的点类型匹配!
 +
但是,<nowiki><moving frame></nowiki>''''''机器人的类型必须匹配!!}}
  
  
 
=== MF.TYPE ===
 
=== MF.TYPE ===
Assigning master robot's locations to the  master-source automatically imposes certain relationship between the positions and orientations of the MF and the master-robot.
+
将主机器人的位置分配给主源会自动在MF和主机器人的位置和方向之间施加一定的关系。'''下表说明了主站和从站点类型与<MF> .type值之间的关系。'''
'''The following table explains the relationships between master's and slaves' point types and the <MF>.type values.'''
 
  
Setting the [[MC-Basic:movingFrame.MASTERSOURCE|MasterSource]] to the one of the master robot locations(SetPoint or Here)  will automatically change the Moving-Frame '''[[MC-Basic:movingFrame.TYPE|type]]''' to its default value (see the table) and <u>lock it</u>. <u>Locking</u> means that according to the given MasterSource only certain '''MF.type''' values are allowed (those with "✓" sign in the table). And if the user tries to assign any other value an error will be returned.
+
[[MC-Basic:movingFrame.MASTERSOURCE|MasterSource]]设置为主机器人位置之一(SetPoint或Here)将自动将Moving-Frame'''[[MC-Basic:movingFrame.TYPE|type]]'''更改为其默认值(参见表)并将其锁定。<u>锁定</u>意味着根据给定的MasterSource,只允许某些MF.type值(表中带有“?”符号)。并且如果用户尝试分配任何其他值,将返回错误。
  
  
Line 73: Line 73:
  
  
====Type-assignment table for some of the most used point-types ====
+
====一些最常用的点类型的类型分配表 ====
  
 
{| border = "1" valign = "top"
 
{| border = "1" valign = "top"
Line 97: Line 97:
 
|}
 
|}
  
* p(3) position only
+
* p(3) 仅位置
* o(4) orientation only
+
* o(4) 仅姿态
* po(5) both position and orientation
+
* po(5) 位置和姿态
  
  
{{Note| In case of  pure orientational moving frames driven by inadequate master-robot point type, type will be set to position (3) but the acutall moving frame will be inactive (can not move)}}
+
{{Note| 在由主机器人点类型不足以驱动的纯方向运动参考系的情况下,类型将被设置为位置(3),但是运动参考系将无效(不能运动}}
  
  
 
[[File:AXY;MovingFrameType.png]]
 
[[File:AXY;MovingFrameType.png]]
  
====Example 1 ====
+
====例子 1 ====
 
<pre>
 
<pre>
 
common shared MF as moving frame of XYZR
 
common shared MF as moving frame of XYZR
 
MF.mastersource = SCARA.setpoint
 
MF.mastersource = SCARA.setpoint
 
</pre>
 
</pre>
Sets MF.type automatically to '''5''' (both position and orientation - default value)!
+
将MF.type自动设置为 '''5'''(位置和姿态 - 默认值)!
  
Trying to change it to a value not supported by the master (e.g. MF.type = 0 ) source will return error:
+
尝试将其更改为主机不支持的值(例如MF.type = 0)源将返回错误:
  
====Example 2 ====
+
====例子 2 ====
 
<pre>
 
<pre>
 
common shared MF as moving frame of XYZR
 
common shared MF as moving frame of XYZR
Line 122: Line 122:
 
MF.mastersource = gXYZ.setpoint
 
MF.mastersource = gXYZ.setpoint
 
</pre>
 
</pre>
In this case we have situation of same position type but a different (or non-existing) orientation type. The MF.type automatically to '''3''' (position only)!
+
在这种情况下,我们具有相同位置类型的情况,但是具有不同(或不存在)姿态类型的情况。 MF.type自动为'''3'''(仅位置)!
  
  
====Example 3 ====
+
====例子 3 ====
 
<pre>
 
<pre>
 
common shared MF as moving frame of XYZYPR
 
common shared MF as moving frame of XYZYPR
Line 131: Line 131:
 
MF.mastersource = TILT.setpoint
 
MF.mastersource = TILT.setpoint
 
</pre>
 
</pre>
In this case we have situation of same orientation type but a different (or non-existing) position type. The MF.type automatically to '''4''' (orientation only)!
+
在这种情况下,我们具有相同姿态类型但具有不同(或不存在)位置类型的情况。 MF.type自动为'''4'''(仅限姿态)!!
  
  
  
====Example 4 ====
+
====例子 4 ====
 
<pre>
 
<pre>
 
common shared MF as moving frame of XYZ
 
common shared MF as moving frame of XYZ
Line 141: Line 141:
 
MF.mastersource = TILT.setpoint
 
MF.mastersource = TILT.setpoint
 
</pre>
 
</pre>
In this case we have situation that both point types do not have anything in common ! So, type will be set to 3 (position only) automatically.
+
在这种情况下,我们有两种点类型没有任何共同之处的情况 因此,类型将自动设置为3(仅位置)。
  
= New properties =  
+
= 新属性 =  
  
== Moving Frame Base Offset ==
+
== 运动参考系基坐标偏移 ==
Mutual space-relationship (position and orientation) between master and slave robots is described by BASE property of MF.<br>
+
主机和从机器人之间的相互空间关系(位置和姿态)由MF的BASE属性描述。<br>
  
* [[ MC-Basic:movingFrame.BASE| <moving-frame>.BASE]] is an offset of the master robot to the slave. It is a moving-frame's property.
+
* [[ MC-Basic:movingFrame.BASE| <moving-frame>.BASE]]是一个主机器人到从属的偏移量。 这是一个运动参考系的属性。
  
== Object Location ==
+
== 对象位置 ==
  
Object moved by two robots or the relative position of two robot's end-points to each other is described by '''[[ MC-Basic:movingFrame.OBJECTLOC| <moving-frame>.OBJECTLOC]]''' Moving-Frame property. It describes the relative position and orientation of the slave's setpoint from the actual master's source coordinates (SetPoint or Here). It holds the same point-type as the parent MF (or the slave-robot).
+
由两个机器人运动的对象或两个机器人的端点的相对位置彼此描述由'''[[ MC-Basic:movingFrame.OBJECTLOC| <moving-frame>.OBJECTLOC]]''' Moving-Frame属性。它描述从实际主站的源坐标(SetPoint或Here)中从站设定点的相对位置和姿态。它与父MF(或从机器人)保持相同的点类型。
  
See Also: [[ MC-Basic:movingFrame.OBJECTLOC| Object Location Property]]
+
参考:[[ MC-Basic:movingFrame.OBJECTLOC| Object Location Property]]
  
{{Note| [[ MC-Basic:movingFrame.OBJECTLOC| OBJECTLOC]] can be used for updating new point-of-contact position in consecutive pick&place applications similar as TRIGGER command in axis-based MF's}}
+
{{Note| [[ MC-Basic:movingFrame.OBJECTLOC| OBJECTLOC]]可用于在连续的拾取和应用中更新新的接触点位置,类似于基于轴的MF的TRIGGER命令。}}
  
= Master-Slave Relationship =
+
= 主从关系 =
  
Once the MF parameters are set the connection between master and slave positions is defined by the following formula.
+
一旦设置了MF参数,则主站和从站位置之间的连接由以下公式定义。
 
<center>
 
<center>
 
'''slave.robot = MS2MF( MF.base<sup>-1</sup> : MF.MSource:MF.ObjectLoc )'''
 
'''slave.robot = MS2MF( MF.base<sup>-1</sup> : MF.MSource:MF.ObjectLoc )'''
 
</center>
 
</center>
  
where MF.MSource is either <master>.setpoint or <master>.feedback
+
其中MF.MSource是<master> .setpoint或<master> .feedback
  
=== MS2MF function is defined as: ===
+
=== MS2MF函数定义为 ===
  
'''M'''aster '''S'''ource to '''M'''aster '''F'''rame function: A = MS2MF(B) is defined as:
+
'''M'''aster '''S'''ource to '''M'''aster '''F'''rame 函数: A = MS2MF(B) 定义为:
  
 
A->position    = '''p-projection''' (B->position)<br>
 
A->position    = '''p-projection''' (B->position)<br>
 
A->orientation =  B->orientation (''for MF.types: 4 and 5 only!'') <br>
 
A->orientation =  B->orientation (''for MF.types: 4 and 5 only!'') <br>
  
* '''p-projection''' is  simple matrix multiplication in the form: '''A->position = TranslationTransformation * B->position'''
+
* '''p-projection'''是简单的矩阵乘法,形式如下: '''A->position = TranslationTransformation * B->position'''
  
  
Line 220: Line 220:
 
-->
 
-->
  
== Point Type transformation ==
+
== 点类型转换 ==
  
 
<u>Translation Transformation</u>
 
<u>Translation Transformation</u>
  
Contrary to the ordinary axes-MFs robot-MFs can have different point type than the slaved robot. In order to translate location from MF point type into slave-robot point type [[MC-Basic:movingFrame.TranslationTransformation|'''<moving-frame>.TranslationTransformation''']] 3x3 double matrix property is defined.
+
与普通轴相反 - MF机器人—MF可以具有与从动机器人不同的点类型。为了将位置从MF点类型转换为从机器人点类型[[MC-Basic:movingFrame.TranslationTransformation|'''<moving-frame>.TranslationTransformation''']]定义3x3双矩阵属性。
  
* defines a transformation-matrix for  of the translation (position) part '''from''' MF.MasterSource's point-type '''to the''' MF's robot-type.
+
* 定义了MF.MasterSource的点类型到MF的机器人类型的平移(位置)部分的变换矩阵。
* the matrix dimension is automatically adjusted by position dimension of MF and the master robot.
+
* 矩阵阶数通过MF和主机器人的位置维度自动调整。
 
<br>
 
<br>
  
Line 240: Line 240:
  
  
for example, defining:<br>
+
例如, 定义:<br>
 
<pre>
 
<pre>
 
common shared MF as moving frame of XYZYPR
 
common shared MF as moving frame of XYZYPR
 
MF.MasterSource = GXY
 
MF.MasterSource = GXY
 
</pre>
 
</pre>
automatically defines:
+
自动定义:
  
 
[[MC-Basic:movingFrame.TranslationTransformation|TranslationTransformation]][*][*] = <math>
 
[[MC-Basic:movingFrame.TranslationTransformation|TranslationTransformation]][*][*] = <math>
Line 257: Line 257:
 
or: '''TranslationTransformation is 2x3 matrix!'''
 
or: '''TranslationTransformation is 2x3 matrix!'''
  
{{Note| In case when number of position coordinates of MF is less then of MasterSource the remaining coordinate will be assigned by the '''MF.BASE''' corresponding  coordinate value.}}
+
{{Note| 在MF的位置坐标数少于MasterSource的情况下,剩余的坐标将由 '''MF.BASE''' 相应的坐标值分配。}}
  
  
Line 321: Line 321:
 
-->
 
-->
  
= Affected(changed) commands =
+
= 受影响(已更改)命令 =
  
== Activation(Syncing) ==
+
== 激活(同步) ==
  
Setting '''[[MC-Basic:robot.SLAVE|<robot>.slave]] = 5''' immediately enters into synchronization-tracking mode, no trigger command is needed.
+
设置'''[[MC-Basic:robot.SLAVE|<robot>.slave]] = 5'''将立即进入同步跟踪模式,不需要触发命令。由于基于机器人MF的工作窗口不存在,'''[[MC-Basic:movingFrame.ZERO|MF.ZERO]]''' 将在进入'''"slave=5"'''时返回当前的MF位置! 在此之后,从机器人将尝试与运动帧位置同步: '''MovingFrame(t) = MF(t) - MF(t0)'''<br>
As the working window in case of robot-based MF's does not exist the '''[[MC-Basic:movingFrame.ZERO|MF.ZERO]]''' will return the current MF position at the moment of entering '''"slave=5"'''! After that moment the slave robot will try to synchronize to the Moving Frame Location: '''MovingFrame(t) = MF(t) - MF(t0)''' <br> where t0 is the moment of issuing "slave=5" ''(See:[[Element Coordination/Absolute Movements During Conveyor Tracking|Absolute_Movements_During_Conveyor_Tracking]])''
+
其中t0是发出"slave=5" ''的时刻。
 +
''(参考:[[Element Coordination/Absolute Movements During Conveyor Tracking|Absolute_Movements_During_Conveyor_Tracking]])''
  
 
&nbsp;  
 
&nbsp;  
  
Where the MF(.) is:  
+
其中MF(.):  
  
 
'''MF(t) = MS2MF( MF.base<sup>-1</sup> : Master(t):MF.ObjectLoc ) '''
 
'''MF(t) = MS2MF( MF.base<sup>-1</sup> : Master(t):MF.ObjectLoc ) '''
  
Master(t) - position of robot master axis at moment t.<br>
+
Master(t) - 机器人主轴在时刻t的位置。<br>
'''MS2MF''' defined in: [[Element Coordination#MS2MF:|Master Source to Moving Frame function]]<br>
+
'''MS2MF''' [[Element Coordination#MS2MF:|Master Source to Moving Frame function]]定义<br>
  
The relation to MC-Basic language variables is obvious:  
+
与MC-Basic语言变量的关系是显而易见的:  
  
 
<nowiki><mf>.</nowiki>'''here''' = MF(t)  
 
<nowiki><mf>.</nowiki>'''here''' = MF(t)  
  
<nowiki><mf>.</nowiki>'''zero''' = MF(0) ''(See [[MC-Basic:movingFrame.ZERO|MovingFrame.ZERO]])''
+
<nowiki><mf>.</nowiki>'''zero''' = MF(0) ''(参考[[MC-Basic:movingFrame.ZERO|MovingFrame.ZERO]])''
  
  

Revision as of 14:57, 30 May 2017

语言: [[::Element Coordination|English]]  • [[::Element Coordination/zh-hans|中文(简体)‎]]

介绍

此功能的主要目标是几个机器人的空间和时间上运动同步。这将使用系统中存在的标准主 - 从关系将其扩展为通用机器人到机器人连接。将要使用的功能是移动坐标系特性,通常用于传输带跟踪。移动坐标系的源将从简单的轴列表扩展到任何机器人类型的笛卡尔命令(SETPOINT,HERE)。

主机器人是从机器人跟随的移动坐标系的主源。 将使用相同的同步算法,除了与跟踪窗口和触发相关的问题(这两个将是无关紧要的)。

跟踪期间从机器人的相对运动是允许的,在常规的输送机跟踪以相同的方式执行。

机器人的相互空间关系将通过新添加的基坐标系和移动坐标系的对象位置偏移来定义。 与此同时,可以实现不同点类型(世界(机器人)框架)和/或不同NDOF的机器人的相互协作。


IMPORTANT.svgIMPORTANT
只有在机器人具有相同点类型的情况下,才能使用完整的位置(位置+姿态)。 在具有不同点类型的机器人的情况下,仅跟踪主机器人位置的位置部分(X,Y,Z)。 姿态角(Yaw,Pitch,Roll)将 被忽略


IMPORTANT.svgIMPORTANT
在具有相同点类型的机器人的情况下,用户能够选择是仅仅在位置或姿态坐标上进行跟踪或者在两者上进行跟踪。请参阅MovingFrame.type属性。


NOTE-Info.svgNOTE
在跟踪期间检测(监控)轴的位置限制和加速度/速度阈值,方式与常规传送带跟踪相同。


DANGER.svgDANGER
需要重要强调的是此功能(使用基于机器人的运动坐标系的元素协作)不会阻止机器人碰撞。 机器人防碰撞完全脱离了这个主题。

系统设置

数据创建

ControlStudio中有两种运动参考系(MF)对象:基于轴和基于机器人。它们都以与使用该命令的基于轴的方式以相同的方式创建:

COMMON SHARED <mf name> as moving frame of <mf-type>

基于轴和基于机器人的运动参考系之间的差异在提供给 MasterSource 命令的参数中。在基于轴<u>的MF中,仅使用主轴作为主源。此外,在<u>基于轴<u>的MF中,所有位置MF的属性(零,此处,上行,下行)的点类型与MF的点类型(即<mf-type>)相同。

在<u>基于机器人 的MF的主源是具有自己的点类型的机器人元素。在基于机器人<u>的MF中,MF的位置和机器人的位置之间的关系将使用新引入的属性来定义。 (参考: Translation Transformation )

主源

<Moving Frame>.MasterSource属性将允许将机器人元素的命令(setpoint)或反馈(here)添加为主站,以下句法将有效:

<Moving Frame>.MasterSource = <robot>.setpoint and <Moving Frame>.MasterSource = <robot>.here

NOTE-Info.svgNOTE
master<robot>的点类型不必与<moving frame>的点类型匹配! 但是,<moving frame>和机器人的类型必须匹配!!


MF.TYPE

将主机器人的位置分配给主源会自动在MF和主机器人的位置和方向之间施加一定的关系。下表说明了主站和从站点类型与<MF> .type值之间的关系。

→ 将MasterSource设置为主机器人位置之一(SetPoint或Here)将自动将Moving-Frametype更改为其默认值(参见表)并将其锁定。<u>锁定意味着根据给定的MasterSource,只允许某些MF.type值(表中带有“?”符号)。并且如果用户尝试分配任何其他值,将返回错误。


<mf>.type value axis-MF robot-MF
pointtype(position)robot = robot-MF pointtype(position)MF
or:
pointtype(orientation)robot = robot-MF pointtype(orientation)MF
robot-MF
neither position or orientation match
0 (linear) (default) invalid invalid
1 (rotary) invalid invalid
2 (rotary de-coupled) invalid invalid
3 (position only) N/A (default)
4 (orientation only) N/A invalid
5 (both pos. and ori.) N/A (default) invalid



一些最常用的点类型的类型分配表

master-robot
MF X XY XYZ XYZR XYZYPR YPR YP
X p p p p p p p
XY p p p p p p p
XYZ p p p p p p p
XYZR p p p p/o/po p p p
XYZYPR p p p p p/o/po o p
(inactive)
YPR p
(inactive)
p
(inactive)
p
(inactive)
p
(inactive)
o o p
(inactive)
YP p
(inactive)
p
(inactive)
p
(inactive)
p
(inactive)
p
(inactive)
p
(inactive)
o
  • p(3) 仅位置
  • o(4) 仅姿态
  • po(5) 位置和姿态


NOTE-Info.svgNOTE
在由主机器人点类型不足以驱动的纯方向运动参考系的情况下,类型将被设置为位置(3),但是运动参考系将无效(不能运动


AXY;MovingFrameType.png

例子 1

common shared MF as moving frame of XYZR
MF.mastersource = SCARA.setpoint

将MF.type自动设置为 5(位置和姿态 - 默认值)!

尝试将其更改为主机不支持的值(例如MF.type = 0)源将返回错误:

例子 2

common shared MF as moving frame of XYZR
common shared gXYZ   as group axnm = a1 axnm = a2 axnm = a3 model=1  of XYZ
MF.mastersource = gXYZ.setpoint

在这种情况下,我们具有相同位置类型的情况,但是具有不同(或不存在)姿态类型的情况。 MF.type自动为3(仅位置)!


例子 3

common shared MF as moving frame of XYZYPR
common shared TILT   as group axnm = a1 axnm = a2 axnm = a3 model=1  of YPR
MF.mastersource = TILT.setpoint

在这种情况下,我们具有相同姿态类型但具有不同(或不存在)位置类型的情况。 MF.type自动为4(仅限姿态)!!


例子 4

common shared MF as moving frame of XYZ
common shared TILT   as group axnm = a1 axnm = a2 axnm = a3 model=1  of YPR
MF.mastersource = TILT.setpoint

在这种情况下,我们有两种点类型没有任何共同之处的情况 因此,类型将自动设置为3(仅位置)。

新属性

运动参考系基坐标偏移

主机和从机器人之间的相互空间关系(位置和姿态)由MF的BASE属性描述。

  • <moving-frame>.BASE是一个主机器人到从属的偏移量。 这是一个运动参考系的属性。

对象位置

由两个机器人运动的对象或两个机器人的端点的相对位置彼此描述由 <moving-frame>.OBJECTLOC Moving-Frame属性。它描述从实际主站的源坐标(SetPoint或Here)中从站设定点的相对位置和姿态。它与父MF(或从机器人)保持相同的点类型。

参考: Object Location Property

NOTE-Info.svgNOTE
OBJECTLOC可用于在连续的拾取和应用中更新新的接触点位置,类似于基于轴的MF的TRIGGER命令。

主从关系

一旦设置了MF参数,则主站和从站位置之间的连接由以下公式定义。

slave.robot = MS2MF( MF.base-1 : MF.MSource:MF.ObjectLoc )

其中MF.MSource是<master> .setpoint或<master> .feedback

MS2MF函数定义为

Master Source to Master Frame 函数: A = MS2MF(B) 定义为:

A->position = p-projection (B->position)
A->orientation = B->orientation (for MF.types: 4 and 5 only!)

  • p-projection是简单的矩阵乘法,形式如下: A->position = TranslationTransformation * B->position


点类型转换

Translation Transformation

与普通轴相反 - MF机器人—MF可以具有与从动机器人不同的点类型。为了将位置从MF点类型转换为从机器人点类型<moving-frame>.TranslationTransformation定义3x3双矩阵属性。

  • 定义了MF.MasterSource的点类型到MF的机器人类型的平移(位置)部分的变换矩阵。
  • 矩阵阶数通过MF和主机器人的位置维度自动调整。


Master-Source: XY Master-Source: XYZ
MF-type: XY TranslationTransformation[1-2][1-2] TranslationTransformation[1-2][1-3]
MF-type: XYZ TranslationTransformation[1-2][1-3] TranslationTransformation[1-3][1-3]


例如, 定义:

common shared MF as moving frame of XYZYPR
MF.MasterSource = GXY

自动定义:

TranslationTransformation[*][*] =

or: TranslationTransformation is 2x3 matrix!

NOTE-Info.svgNOTE
在MF的位置坐标数少于MasterSource的情况下,剩余的坐标将由 MF.BASE 相应的坐标值分配。



受影响(已更改)命令

激活(同步)

设置<robot>.slave = 5将立即进入同步跟踪模式,不需要触发命令。由于基于机器人MF的工作窗口不存在,MF.ZERO 将在进入"slave=5"时返回当前的MF位置! 在此之后,从机器人将尝试与运动帧位置同步: MovingFrame(t) = MF(t) - MF(t0)
其中t0是发出"slave=5" 的时刻。 (参考:Absolute_Movements_During_Conveyor_Tracking)

 

其中MF(.)是:

MF(t) = MS2MF( MF.base-1 : Master(t):MF.ObjectLoc )

Master(t) - 机器人主轴在时刻t的位置。
MS2MFMaster Source to Moving Frame function定义

与MC-Basic语言变量的关系是显而易见的:

<mf>.here = MF(t)

<mf>.zero = MF(0) (参考MovingFrame.ZERO)


This means that the total slave robot motion of the slave robot that began to track (slave=5, synced or not) is the SAME as position of free slave robot (slave=0) IF the master robot did not move. In other words, if you want to teach some points on a moving object connected to the master robot just stop the master robot and move the slave to its desired destination on the object.


NOTE-Info.svgNOTE
Movement to MF.ZERO after initialization of tracking causes the slave robot to synchronize exactly to the master robot's location.

Deactivation(DeSyncing)

Setting <robot>.slave = 0 immediately enters into de-synchronization mode, which smoothly reduces tracking velocity to zero. (The part of the velocity induced by tracking not the velocity of added movements).

NOTE-Info.svgNOTE
In robot-based MF's de-syncing is done using initial values of the movement in cartesain space (position, velocity, acceleration) using the parameters below:

It is possible to activated syncing to another robot or just a plane movement during de-syncing. (Same as axes-based MF's)

Is Moving Frame Synchronized

The Is-Moving-Frame-Synchronized flag will have the same function as in axis-based MF's.


Tracking Parameters

The parameters:

  • VelocityMaxTrans, VelocityMaxRot, AccelerationMaxTrans, AccelerationMaxRot, JerkMaxTrans, JerkMaxRot
  • Dampingfactor, FilterFactor, MaxFlops

will be used in the same way as in axis-based MF's. Instead of acting on a scalar distance() between master axis and tracking variable, cartesian distance () and Euler's angle distance () between master robot position and slave-robot master tracking variable will be used for building criteria of stressful synchronization.

Trigger

As in robot-based MF's the concept of working-window and entering an object into it does not exist, the Trigger command will have no effect on robot-based moving frames. The actual moment of tracking will start always with setting of slave=5 independently of previously used trigger command.

NOI

In case of MF-robot NOI will return always -1.

Is In Window

Is In Window flag will return always 1 (true), actually there is no concept of working windows in this type of MF.

Unused Moving-Frame properties

  • Upstream, Downstream, Upmaster, Downmaster

As the working-window concept does not exist in robot-based MF's these properties will have absolutely no influence on MF-robot operation.

Next Item command

  • NEXTITEM command will have no effects on MF-robot operation.

Moving Frame Coordinate Transformations

Slave robot is connected to a master through Moving-Frame assigned to the slave's master frame property:

<slaverobot>.MasterFrame = <master frame>

Master frame is a link between slave and master robot. It Includes definition of the master-source which can be either robot Cartesian command point (SETPOINT) or robot's Cartesian feedback (HERE):

<master frame>.MasterSource = <masterrobot>.SETPOINT

BASE transformation

Master frame defines spacial relationship (distance and rotation) of the slave's robot frame to the master: <Master Frame>.Base

Two robots with a defined distance between them using MF.BASE

Defining an Object

In total the object is held by two robots from two sides. Looking from the master's coordinate frame we have two points (in master-robot's world(robot) frame):

<masterrobot>.setpoint
<masterrobot>.setpoint:<movingframe>.objectloc

The second point of the object can be also reached through salve robot by (viewed by master-robot's world(robot) frame):

<movingframe>.base:<slaverobot>.setpoint

Usage of OBJECTLOC

<Moving Frame>.ObjectLoc is location property of the Moving Frame data-object of the same point-type as the moving frame. For example, it means if the moving frame was declared as XYZR (common shared MF as moving frame of XYZR), the OBJECTLOC will be also location of XYZR type.

The OBJECTLOC specifies position and orientation of the slave's end-effector relative to the master's end point (Master Frame actually).

Example of complete slave command calculation

Frame calculations in two-robot case.


mf.base = #{100,100,0,45}
mf.base-1 = #{-141,100,0,-45}
mf.objectloc = #{80,0,0,180}
master.setpoint = #{130,-72,0,0}

slave.setpoint = mf.base-1:master.setpoint:mf.objectloc
slave.setpoint = #{-43 , -200 , 0 ,135 }


  • The above calculations are true in case both robots are of same (XYZR) point-type and the default MF.type value (5- both position and orientation) is used.

Example of three robots working on a same object

Here is an example of three-robot cooperation. One robot is defined as a master and the other two are slaves. Each of the slave robots is connected through it's master frame to the master robot on different distances from it and on different gripper-points on the object.

Frame Calculation in three-robot case

In this example we will define two Moving frame with each of them having a different OBJECTLOC.

The first Moving Frame:

Common Shared MF1 As Moving Frame Of XYZR
MF1.MasterSource = <masterrobot>.SETPOINT
MF1.BASE = #{..., ..., ..., 0}
MF1.OBJECTLOC = #{L,..., ..., 180}

The second Moving Frame:

Common Shared MF2 As Moving Frame Of XYZR
MF2.MasterSource = <masterrobot>.SETPOINT
MF2.BASE = #{..., ..., ..., 0}
MF2.OBJECTLOC = #{SQRT(3)*L,L/2, ..., -150}
  • Assuming the object is even-sided (Equilateral) triangle of the side length L.
NOTE-Info.svgNOTE
The orientational part of the second object-location MF's it is -150 degrees. The first slave's robot Xtool axis is in exactly opposite direction to the master's Xtool axis. And the second slave robot's Ytool axis is in exactly opposite direction to the master's Ytool axis.

Algorithms and Software design

  • The master slave relationship is based on the same principleas in robot-based MF's as in axis-based MF's. The underling idea is to have same sort of movement if the MF is standing or moving.The principals are described here: Absolute_Movements_During_Conveyor_Tracking
  • Axis-based moving frame tracking algorithm based on predicting the rendezvous point and limiting the motion by velocity, acceleration and jerk constant is described here: One_Dimensional_Tracking_Algorithm
  • Concept of global frame coordinate system as addition to base and world(robot) frames for multiple robot usage is described here:Global Coordinates


Examples

Example 1. two different robot kinematics

Cooperation between two unequal robot kinematics.

Cooperation between SCARA and PUMA robot kinematics, PUMA robot is the master frame here


Moving Frame definition:

Common Shared MF as Moving Frame of XYZR

Linking it to the source (master):

MF.MasterSource = Puma.Setpoint

The master-source is a robot(PUMA) of point-type XYZYPR and the linked robot(SCARA) or the MF is of XYZR point type. In this case the MF.type will be automatically set to 3 (position only). Orientation angle changes of the master robot will have no effects on the slave. So we need to define transformation matrix:



Or in the code:

' First column:
MF.TranslationTransformation[1][1]=1
MF.TranslationTransformation[2][1]=0
MF.TranslationTransformation[3][1]=0
' Second column:
MF.TranslationTransformation[1][2]=0
MF.TranslationTransformation[2][2]=1
MF.TranslationTransformation[3][2]=0
' Third column:
MF.TranslationTransformation[1][3]=0
MF.TranslationTransformation[2][3]=0
MF.TranslationTransformation[3][3]=1


And then the offsets definitions:

The XY coordinates will be offseted for (10,10) mm:

MF.base = #{10,10,0,0}

A distance of 100mm between the two robots tool-tips is defined as:

MF.ObjectLoc = #{0,0,100,0}


and the tracking (master-slave) is defined by:

Scara.Masterframe = MF

and started:

Scara.slave = 5

Example 2. SCARA and a tilting table

AXY;SCARA TILT.png

Moving Frame definition :

Common Shared MF as Moving Frame of XYZR


Having a tilt table robot (Object Having only Yaw and Pitch angle):

Common Shared TiltTable As Group Axnm = Ax5 Axnm = Ax6 Model = 1 of YP

Linking it to the source (master):

MF.MasterSource = TilTable.Setpoint

The master-source is a tilt-table of point-type YP and the linked robot or the MF is of XYZR point type. The MF.type will be automatically set to 3 (position only).

Transformation matrix for position actually does not exist as the TiltTable have no position component! So there is nothing to be set here.


And then the offsets definitions:

The XY coordinates will be offseted for 200 mm:

MF.base = #{-200,0,0,0}


Defining the object-location of 100mm makes the trick!

mf.base = #{Xb,Yb,Zb,Rb}
mf.objectloc = #{Xo,Yo,Zo,0}
master.setpoint = #{yaw,pitch}

slave.setpoint = mf.base-1:master.setpoint:mf.objectloc

i.e. the vector [Xo,Yo,Zo] will be rotated by the tilt-table angles [yaw,pitch]!!!

and the tracking (master-slave) is defined by:

Scara.Masterframe = MF

and started:

Scara.slave = 5

Example 3. Two SCARA's working on a same piece

A robot to robot tracking example:
Two SCARA robots, one master the other is slave.
Case of tracking with two SCARA robots.

Setup:
set the slave robot to track the master on a distance of 100mm pointing in face-to face direction (180º)

Common Shared MF as Moving Frame Of XYZR
MF.MasterSource = ScaraMaster
MF.ObjectLoc = #{100,0,0,180}
ScaraSlave.MovingFrame = MF
ScaraSlave.Slave=5

At the moment of engagement (i.e. Slave=5) Zero point is recorded!



Wait to be Synchronized and arriving to master-position together:
System waits until MF is synchronized (Is-Moving-Frame-Synchronized equals 1) and motion towards Zero point is completed (isMoving flag is not positive)

Moves MF.Zero
While ScaraSlave.IMFS <> 1 and ScaraSlave.Ismoving > 0
Sleep 1
End While

Do something, or just stay in tracking mode.


Stopping.De-Synchronize:

slave = 0
while  ScaraSlave.IMFS <> 0
Sleep 1
End While

After this ScaraSlave will be stopped not exactly on the ScaraMaster's path (deviation is more or less random and depends on the master's robot path and joints' deceleration parameters).

Example 4. Coordination

Relative position between the robots during tracking, the slave robot to track the master on a distance of 100mm pointing in face-to face direction (180º)

Coordination. zoomed detail: Coordination detail


Example 5. PUMA and SCARA on a patch placement job

Setup.

For setting up global; coordinates see: Global_Coordinates

Detail view of work-space locations


Geometry

Geometric Setup.

Also see: Global_Coordinates

the given setup can be accomplished in four different ways:

World(Robot) Frame Base Frame Global Base Moving Frame

puma.base = #{0,0,0,0,0,0}
scara.base = #{0,0,0,0}
Moves puma #{50,0,600,90,90,0}
Moves scara #{-100,-100,0,0}

puma.base = #{200,100,0,0,0,0}
scara.base = #{100,100,0,0}
Moves puma #{250,100,600,90,90,0}
Moves scara #{200,0,-100,0}

puma.base = #{200,100,0,0,0,0}
puma.gbase = #{0,0,0,0,0,0}
scara.base = #{100,100,0,0}
scara.gbase = #{0,100,700,0}
Moves puma #{250,100,600,90,90,0}
Moves scara #{250,100,600,90,90,0}

puma.base = #{200,100,0,0,0,0}
scara.base = #{100,100,0,0}
puma.globalbase = #{0,0,0,0,0,0}
scara.globalbase = #{0,0,0,0,0,0}
Moves puma #{250,100,600,90,90,0}
MF.MasterSource = puma.setpoint
MF.Base = #{200,0,-600,0}
MF.ObjectLoc = #{0,0,50,0}
scara.MasterFrame = MF
scara.slave = 5
Moves scara MF.zero

NOTE-Info.svgNOTE
All four given code examples will bring the two robots to same positions!
IMPORTANT.svgIMPORTANT
The "Moving Frame" example takes into account SCARA base coordinates and not the global ones as the MF is declared of XYZR point type.

System setup

definitions:

Common Shared MF As Moving Frame Of XYZR
Common Shared hold As Location Of XYZR
Common Shared patch_feeder As Location Of XYZR

initialization :

SCARA.Base  = #{100,100,0,0}
SCARA.GBASE = #{0,100,700,0,0,0}
PUMA.Base   = #{200,100,0,0}


MF.MasterSource = PUMA.SETPOINT
MF.ObjectLoc    = #{0,0,50,0}
MF.Base         = #{200,0,-700,0}

SCARA.BlendingMethod = 2
SCARA.BlendingFactor = 80
SCARA.MasterFrame = MF

Execution Code

while patches()
   MoveS PUMA MoldPose((PatchNumber()))
   MoveS SCARA patch_feeder
   MoveS SCARA down
   Call TakePatch(SCARA)
   Moves SCARA up
   Moves SCARA hold
   MF.ObjectLoc = MoldProfile(PatchNumber())
   SCARA.slave = 5
   Moves SCARA MF.Zero
   Call GluePatch(SCARA)
   Moves SCARA up
   SCARA.Slave = 0
   Moves SCARA hold
end while

Functions and variables used in the program above:

Function MoldPose( n as long) as location of XYZYPR

Function returning pathc position on the mold in PUMA's coordinate system (e.g. XYZYPR)

Function MoldProfile( n as long) as location of XYZR

Function returning the shape profile of the mold in XYZ coordinates , setting it into OBJECTLOC will effectively set a right position of the SCARA robot on the mold. Returns SCARA locations (XYZR).

Sub TakePatch(robot as generic group)

Subroutine for taking (gripper manipulation, vacuum, waiting, etc) a patch from the feeder.

Sub GluePatch(robot as generic group)

Subroutine for placing the patch on the mold. Here included are all synchronizations needed (wait, gripper open, ...)

MF.Base 

Moving Frame Base offset,

hold

Waiting position

Patch_feeder

Position from where the patches are taken.