Difference between revisions of "Motion Blending/zh-hans"

From SoftMC-Wiki
Jump to: navigation, search
(Created page with "{{Languages}} ==介绍== 混合是两个或多个运动的组合在一起。 在混合运动期间通常不会在中间点停止。 有三种混合类型: # '''CP''' (Conti...")
 
(AXY: new links)
 
(15 intermediate revisions by 2 users not shown)
Line 1: Line 1:
{{Languages}}
+
{{Languages|Motion_Blending}}
 
==介绍==
 
==介绍==
  
Line 9: Line 9:
 
# '''SP''' (SuperPosition ) 混合.<br>''两个运动组合成一个,每个运动都由自己的运动曲线引导.''
 
# '''SP''' (SuperPosition ) 混合.<br>''两个运动组合成一个,每个运动都由自己的运动曲线引导.''
 
# '''AI''' (Advance Interpolation) 混合.<br>''许多运动通过一个运动曲线引导成为一个运动。''
 
# '''AI''' (Advance Interpolation) 混合.<br>''许多运动通过一个运动曲线引导成为一个运动。''
由[[MC-Basic:group.BLENDINGMETHOD|BlendingMethod]] property.属性选择。
+
由[[MC-Basic:element.BLENDINGMETHOD|BlendingMethod]] property.属性选择。
  
 
=== 混合属性 ===
 
=== 混合属性 ===
Line 21: Line 21:
 
| align="center" |'''&nbsp;AI&nbsp; '''
 
| align="center" |'''&nbsp;AI&nbsp; '''
 
|-
 
|-
||[[MC-Basic:group.BLENDINGMETHOD|BlendingMethod]]||1||2||3
+
||[[MC-Basic:element.BLENDINGMETHOD|BlendingMethod]]||1||2||3
 
|-
 
|-
||[[MC-Basic:group.CP|CP]]||✓ ||-||-  
+
||[[MC-Basic:element.CP|CP]]||✓ ||-||-  
 
|-
 
|-
||[[MC-Basic:group.CPPREV|CPPrev]]||✓ ||-||-  
+
||[[MC-Basic:element.CPPREV|CPPrev]]||✓ ||-||-  
 
|-
 
|-
||[[MC-Basic:group.BLENDINGFACTOR|BlendingFactor]]||-||1..100||-
+
||[[MC-Basic:element.BLENDINGFACTOR|BlendingFactor]]||-||1..100||-
 
|-  
 
|-  
||[[MC-Basic:group.BLENDINGFACTORPREVIOUS|BFPrev]]||-||1..100||-
+
||[[MC-Basic:element.BLENDINGFACTORPREVIOUS|BFPrev]]||-||1..100||-
 
|-  
 
|-  
||[[MC-Basic:group.BLENDPROTECTED|BlendProtected]]||-||✓||-
+
||[[MC-Basic:element.BLENDPROTECTED|BlendProtected]]||-||✓||-
 
|-
 
|-
||[[MC-Basic:group.BLENDINGSTARTCONDITION|BlendingStartCondition]]||✓||✓||-
+
||[[MC-Basic:element.BLENDINGSTARTCONDITION|BlendingStartCondition]]||✓||✓||-
 
|-
 
|-
||[[MC-Basic:group.DOUBLEMODE|DoubleMode]]||✓||✓||-
+
||[[MC-Basic:element.DOUBLEMODE|DoubleMode]]||✓||✓||-
 
|}
 
|}
  
Line 48: Line 48:
 
# 如果节点BF值设置为100(或CP = 0),则不会与下一个运动混合。
 
# 如果节点BF值设置为100(或CP = 0),则不会与下一个运动混合。
  
===Program Example ===
+
=== 程序示例 ===
 
<pre>
 
<pre>
 
Blendingmethod =1 ' cp
 
Blendingmethod =1 ' cp
Line 72: Line 72:
 
* 如果节点BF值设置为100(或CP = 0),则不会与下一个运动混合。
 
* 如果节点BF值设置为100(或CP = 0),则不会与下一个运动混合。
  
* [[MC-Basic:group.BLENDINGFACTOR|'''BlendingFactor (<robot>.BF)''']]  - 模态(全局)或节点(局部)定义运动之间的混合。 '''''这是给下一个运动''''' 范围从0(即时= 最大混合值)到100(无混合)。<br>
+
* [[MC-Basic:element.BLENDINGFACTOR|'''BlendingFactor (<robot>.BF)''']]  - 模态(全局)或节点(局部)定义运动之间的混合。 '''''这是给下一个运动''''' 范围从0(即时= 最大混合值)到100(无混合)。<br>
  
* [[MC-Basic:group.BLENDINGFACTORPREVIOUS|'''BlendingFactorPrevious (<robot>.BFPrev)''']] - either modal (global) or nodal (local) overwrites - if in the range of 0 to 100 -  the <robot>.BF of the previous motion. '''''Meant to be applied between the previous motion and the current one.''''' The meaning of the range 0 to 100 is the same as with <robot>.BF. If no such overwriting is desired <robot>.BFPrev must be set to -1 (actually: any negative number).
+
* [[MC-Basic:element.BLENDINGFACTORPREVIOUS|'''BlendingFactorPrevious (<robot>.BFPrev)''']] - 模态(全局)或节点(局部)覆盖(如果在0-100范围内)前一运动的<robot> .BF。'''''在之前的运动和现在的运动之间是适用的'''''。范围0到100的含义与<robot> .BF相同。 如果不需要这样的覆盖<robot> .BFPrev必须设置为-1(实际上可以是任何负数)。
  
* The same shall apply to [[MC-Basic:group.CP|'''<robot>.CP''']] and [[MC-Basic:group.CPPREV|'''<robot>.CPPrev''']]. If given and > 0 <robot>.CPPrev shall overwrite the previous <robot>.CP. If -1 (actually: any negative number) it shall be ignored. The default shall be -1. If the overwrite comes too late the previous motion shall continue with its own <robot>.CP. This means that it might still apply its own low CP if it was to be overwritten by a large CPPrev. These two factors basically allow to give separate blending coefficients for the two end points of a motion, together with a very explicit and easy rule how they're applied. One can:
+
* 这同样适用于[[MC-Basic:element.CP|'''<robot>.CP''']][[MC-Basic:element.CPPREV|'''<robot>.CPPrev''']]。如果给定且> 0 <robot> .CPPrev将覆盖之前的<robot> .CP。如果是-1(实际上:任何负数),它将被忽略。默认值为-1。如果覆盖太晚,之前的运动将继续使用自己的<robot> .CP。 这意味着如果被一个大的CPPrev覆盖,它可能仍然应用自己的低CP。这两个因素基本上允许为运动的两个端点提供单独的混合系数,以及如何非常明确和容易的规则应用它们。可以是:
  
::a) always determine blending in advance (i.e. before or at starting the motion)
+
::a) 总是提前确定混合(即在开始运动之前或之后)
  
::b) always determine blending retrospectively (i.e. after starting the motion)
+
::b) 总是确定混合追溯(即开始运动后)
  
::c) mix a) and b) randomly
+
::c) 随机混合a)和b)
  
  
Line 98: Line 98:
 
<br/>Blending Behavior
 
<br/>Blending Behavior
  
=== Rules Summary ===
+
=== 规则摘要 ===
  
# global BF (<robot>.bf=<NUM>) is the default BF
+
# 全局BF (<robot>.bf=<NUM>)是默认的BF
# local BF (move <robot> BF=<NUM>) overwrites that default per motion
+
# 局部BF (move <robot> BF=<NUM>) 覆盖每个运动的默认值
# this results in an effective BF per motion
+
# 这导致每次运动BF有效
# global BFPrev initialized by the system to -1
+
# 全局BFPrev由系统初始化为-1
# local BFPrev overwrites global BFPrev per motion
+
# 局部BFPrev覆盖每个运动的全局BFPrev
# this results in an effective BFPrev per motion
+
# 这导致每次运动BFPrev有效
# if the effective BFP is >= 0 (not negative), it overwrites the effective BF for the previous motion
+
# 如果有效BFP> = 0(而不是负),它将覆盖先前运动的有效BF
# the same will apply to CP and CPPrev
+
# 这同样适用于CP和CPPrev
  
with some side effects:
+
有一些反作用:
  
{{Note| Globally setting BFPrev to <nowiki>= 0</nowiki> is not recommended, because it will overwrite any and all elaborate local BF}}
+
{{Note| 不建议将BFPrev全局设置为<nowiki>= 0</nowiki>,因为它会覆盖任何和所有详细的本地BF。}}
  
{{Note | Accuracy of the path length depends on the velocity at the moment of blending. Error in the magnitude of <math>V \cdot T </math> can be expected!}}
+
{{Note | 路径长度的精度取决于混合时的速度,可以预计<math>V \cdot T </math>的大小误差!}}
  
  
Line 119: Line 119:
 
''BF vs BFprev''
 
''BF vs BFprev''
  
== See Also ==
+
== 参见 ==
  
 
<!-- * {{Bugzilla|2847}} -->
 
<!-- * {{Bugzilla|2847}} -->
* [[MC-Basic:group.CP|'''<robot>.CP''']]  
+
* [[MC-Basic:element.CP|'''<robot>.CP''']]  
* [[MC-Basic:group.CPPREV|'''<robot>.CPPrev''']]
+
* [[MC-Basic:element.CPPREV|'''<robot>.CPPrev''']]
* [[MC-Basic:group.BLENDINGFACTOR|'''BlendingFactor (<robot>.BF)''']]
+
* [[MC-Basic:element.BLENDINGFACTOR|'''BlendingFactor (<robot>.BF)''']]
* [[MC-Basic:group.BLENDINGFACTORPREVIOUS|'''BlendingFactorPrevious (<robot>.BFPrev)''']]
+
* [[MC-Basic:element.BLENDINGFACTORPREVIOUS|'''BlendingFactorPrevious (<robot>.BFPrev)''']]
 
* [[Safe Superposition (SP) blending| '''Safe Superposition (SP) blending''']]
 
* [[Safe Superposition (SP) blending| '''Safe Superposition (SP) blending''']]
  
 
[[Category:Motion Control|Motion Blending]]
 
[[Category:Motion Control|Motion Blending]]
 
[[Category:Motion Blending|Blending]]
 
[[Category:Motion Blending|Blending]]

Latest revision as of 13:34, 13 September 2017

语言: English  • 中文(简体)‎

介绍

混合是两个或多个运动的组合在一起。 在混合运动期间通常不会在中间点停止。

有三种混合类型:

  1. CP (Continous Path) 混合.
    两个运动通过一个共同的运动曲线引导成为一个运动。
  2. SP (SuperPosition ) 混合.
    两个运动组合成一个,每个运动都由自己的运动曲线引导.
  3. AI (Advance Interpolation) 混合.
    许多运动通过一个运动曲线引导成为一个运动。

BlendingMethod property.属性选择。

混合属性

在不同的混合方法中使用不同的混合属性:

Properties  CP   SP   AI 
BlendingMethod 1 2 3
CP - -
CPPrev - -
BlendingFactor - 1..100 -
BFPrev - 1..100 -
BlendProtected - -
BlendingStartCondition -
DoubleMode -

简单混合

前两种混合方法(Continuous Path (CP) and Super Position (SP))的特征在于,在混合中两个运动是活动的并且精确的组合成一个运动。在第一种情况(CP)中使用曲线跟随进行组合,在第二种情况(SP)中是简单的添加了两个运动。这两种混合方法的触发是以指定从第一运动的目标位置的距离。在CP中,这是由cp因子定义的,它代表与目标点的线性距离(但是这个因子与第二运动的CP相结合)。在SP的情况下,它是起点(混合因子 - BF)的简单距离(以百分比给出)。 在这两种情况下,当前运动的参数(CP或BF)影响下一个运动的混合点。 当其中一个运动没有明确的混合参数时,将使用默认值(CP或BF)。 但默认值也可以隐式关闭混合(CP = 0或BF = 100)。

  • 如果其中一个运动已关闭混合,则适用以下规则:
  1. 节点BF定义了混合中下一个运动的起始点。
  2. 如果节点BF值设置为100(或CP = 0),则不会与下一个运动混合。

程序示例

Blendingmethod =1 ' cp
CP = 0
BlendingFactor = 100
MOVE L
MOVE L CP = 10
Move L
delay 100
Blendingmethod =2 ' sp
CP = 0
BlendingFactor = 100
MOVE L
MOVE L BlendingFactor = 85
Move L BlendingFactor = 100 

混合传递规则

  • BF / CP的节点值定义了混合中下一步运动的起始点。
  • 如果节点BF值设置为100(或CP = 0),则不会与下一个运动混合。
  • BlendingFactor (<robot>.BF) - 模态(全局)或节点(局部)定义运动之间的混合。 这是给下一个运动 范围从0(即时= 最大混合值)到100(无混合)。
  • BlendingFactorPrevious (<robot>.BFPrev) - 模态(全局)或节点(局部)覆盖(如果在0-100范围内)前一运动的<robot> .BF。在之前的运动和现在的运动之间是适用的。范围0到100的含义与<robot> .BF相同。 如果不需要这样的覆盖<robot> .BFPrev必须设置为-1(实际上可以是任何负数)。
  • 这同样适用于<robot>.CP<robot>.CPPrev。如果给定且> 0 <robot> .CPPrev将覆盖之前的<robot> .CP。如果是-1(实际上:任何负数),它将被忽略。默认值为-1。如果覆盖太晚,之前的运动将继续使用自己的<robot> .CP。 这意味着如果被一个大的CPPrev覆盖,它可能仍然应用自己的低CP。这两个因素基本上允许为运动的两个端点提供单独的混合系数,以及如何非常明确和容易的规则应用它们。可以是:
a) 总是提前确定混合(即在开始运动之前或之后)
b) 总是确定混合追溯(即开始运动后)
c) 随机混合a)和b)


moves robot loc1 BF=0 
moves robot loc2 BFPrev=90 BF=90 
moves robot loc3 BFPrev=50 

means: loc1 -> BF90 -> loc2 -> BF50 -> loc3



Blending Behavior
Blending Behavior

规则摘要

  1. 全局BF (<robot>.bf=<NUM>)是默认的BF
  2. 局部BF (move <robot> BF=<NUM>) 覆盖每个运动的默认值
  3. 这导致每次运动BF有效
  4. 全局BFPrev由系统初始化为-1
  5. 局部BFPrev覆盖每个运动的全局BFPrev
  6. 这导致每次运动BFPrev有效
  7. 如果有效BFP> = 0(而不是负),它将覆盖先前运动的有效BF
  8. 这同样适用于CP和CPPrev

有一些反作用:

NOTE-Info.svgNOTE
不建议将BFPrev全局设置为= 0,因为它会覆盖任何和所有详细的本地BF。
NOTE-Info.svgNOTE
路径长度的精度取决于混合时的速度,可以预计的大小误差!


Blending Prev.png
BF vs BFprev

参见