Motion Blending

From SoftMC-Wiki
Revision as of 12:55, 22 May 2014 by Lisa (talk | contribs) (Summary)
Jump to: navigation, search

Blending is combination of two or more motions together. During Blending motion typically does not stop at the intermediate points.

There are three blending types:

  1. CP (Continous Path) blending.
    Two movements are combined into one lead by one common profile.
  2. SP (SuperPosition ) blending.
    Two movements are combined into one by addition, each movement is lead by its own profile.
  3. AI (Advance Interpolation) blending.
    Many movements are combined into one lead by one common profile.

Selected by BlendingMethod property.

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


The softMC system has two blending methods that combine two active motions into one: Continuous Path (CP) and Super Position (SP). In first case(CP) the combination is done using profiler-following method, and in the second case (SP) simple addition of two movements. Both methods use the distance from the target position of the first motion as a trigger for blending start. In CP this is defined by the cp factor which represents the linear distance from the target point (however this factor is combined with the CP of the second motion). In case of the SP it is a simple distance (given in percentage) from the starting point (Blending factor - BF). In both cases the parameter (CP or BF) of the current motion influences the point of blending of the next motion.


  • Nodal values of BF/CP define the starting point of the next motion in blending.
  • If the nodal BF value is set to 100 (or CP=0), there will be no blending with next motion.
  • BlendingFactor (<robot>.BF) - either modal (global) or nodal (local) define the blending between the motion. It is given for and the next upcoming motion. Ranges from 0 (immediate = maximum blending) to 100 (no blending).
  • 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).
  • The same shall apply to <robot>.CP and <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:

a) always determine blending in advance (i.e. before or at starting the motion)
b) always determine blending retrospectively (i.e. after starting the motion)
c) mix a) and b) randomly


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



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


Summary

  1. global BF (<robot>.bf=<NUM>) is the default BF
  2. nodal BF (move <robot> BF=<NUM>) overwrites that default per motion (this results in an effective BF per motion)
  3. global BFPrev initialized by the system to -1
  4. nodal BFPrev overwrites global BFPrev per motion (this results in an effective BFPrev per motion )
  5. if the effective BFPrev is >= 0 (not negative), it overwrites the effective BF for the previous motion
  6. the same shall apply to CP and CPPrev


Some side effects:

NOTE-Info.svgNOTE
Globally setting BFPrev to >= 0 is probably a bad idea, because it will overwrite any and all elaborate local BF, but that's the spec.
NOTE-Info.svgNOTE
Accuracy of the path length depends on the velocity at the moment of blending. Error in the magnitude of should be expected!

See Also: