Difference between revisions of "AXY:Blending"
Line 1: | Line 1: | ||
− | Blending Behavior: | + | == Blending Behavior: == |
+ | |||
+ | 1.) <robot>.BlendingFactor (<robot>.BF) - either modal (global) or nodal (local) defines the blending between the motion it is given for and the next upcoming motion. ranges from 0 (immediate = maximum blending) to 100 (no blending).<br> | ||
+ | |||
+ | 2.) <robot>.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>.BFP must be set to -1 (actually: any negative number). the default value shall be -1, so that the default behaviour is the same as with current 4.2 firmwares.<br> | ||
+ | example:<br> | ||
+ | |||
+ | |||
+ | <pre> | ||
+ | moves robot loc1 BF=0 <br> | ||
+ | moves robot loc2 BFPrev=90 BF=90 <br> | ||
+ | moves robot loc3 BFPrev=50 | ||
+ | </pre> | ||
+ | ::means:<br> '''loc1 -> BF90 -> loc2 -> BF50 -> loc3'''<br> | ||
+ | |||
+ | 3.) the same shall apply to <robot>.CP and (a new) <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 | ||
+ | |||
+ | without any implicit magic at the price of only little changes to existing code. | ||
+ | |||
+ | |||
+ | == Summary: == | ||
+ | |||
# global BF (<robot>.bf=<NUM>) is the default BF | # global BF (<robot>.bf=<NUM>) is the default BF |
Revision as of 08:23, 13 April 2011
Blending Behavior:
1.) <robot>.BlendingFactor (<robot>.BF) - either modal (global) or nodal (local) defines the blending between the motion it is given for and the next upcoming motion. ranges from 0 (immediate = maximum blending) to 100 (no blending).
2.) <robot>.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>.BFP must be set to -1 (actually: any negative number). the default value shall be -1, so that the default behaviour is the same as with current 4.2 firmwares.
example:
moves robot loc1 BF=0 <br> moves robot loc2 BFPrev=90 BF=90 <br> moves robot loc3 BFPrev=50
- means:
loc1 -> BF90 -> loc2 -> BF50 -> loc3
- means:
3.) the same shall apply to <robot>.CP and (a new) <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
without any implicit magic at the price of only little changes to existing code.
Summary:
- global BF (<robot>.bf=<NUM>) is the default BF
- local BF (move <robot> BF=<NUM>) overwrites that default per motion
- this results in an effective BF per motion
- global BFP initialized by the system to -1
- local BFP overwrites global BFP per motion
- this results in an effective BFP per motion
- if the effective BFP is >= 0 (not negative), it overwrites the effective BF for the previous motion
- the same shall apply to CP and CPP
with some side effects:
- globally setting BFP to >= 0 is probably a bad idea, because it will
overwrite any and all elaborate local BF, but that's the spec.
See Also: Issue 2847