INOS
|
Public Types | |
enum | EState { eStaVirgin = 0 , eStaEdit = 1 , eStaRaw = 2 , eStaReady = 3 , eStaRunning = 4 , eStaStopping = 5 , eStaBreaking = 6 , eStaCanceling = 7 , eStaSettling = 8 , eStaTransient = 9 , eStaPaused = 10 , eStaDone = 11 , eStaLast = 12 } |
move path states | |
enum | { eCmdAttach = 256 , eCmdDetach = 257 , eCmdFirst = 258 , eCmdSetAxis , eCmdSetCurve , eCmdReset , eCmdSetMapping , eCmdGetMoveTime , eCmdGetMoveTicks , eCmdGetMoveLength , eCmdGetPositionDelta , eCmdGetMaxConstantVelocity , eCmdAddEvent , eCmdSetEventDescriptor , eCmdPrepare , eCmdStartRun , eCmdRun , eCmdPrepareAppend , eCmdAppend , eCmdBufferLow , eCmdBufferEmpty , eCmdStop , eCmdBreak , eCmdContinue , eCmdCancel , eCmdCancelData , eCmdLast } |
enum | { eParamIndexGlobalInternal = 0 , eParamIndexGlobal = 0xff , eParamIndexMask = 0x0000ffff , eParamTypeNumber = 0x00010000 , eParamTypeString = 0x00020000 } |
internal flags | |
enum | { eFlgOwnerInterpolator = 0x00000001 , eFlgOwnerTrajectory = 0x00000002 , eFlgHasRapidSegments = 0x00000004 } |
internal flags | |
typedef std::function< uint32(CINOSMovePath *, uint32, TINOSMovePathVec &, TINOSMovePathVec &, TINOSMovePathVec &, TINOSMovePathVec &)> | tpActiveCallback |
Set callback method used for active trajectory handling. This callback is called on every sample and let's the application react accordingly if needed. | |
Public Member Functions | |
EState | GetState () const |
Get move path state. | |
bool | IsMoving () const |
uint32 | GetError () const |
Return current pending movepath error, see also INOS_MOVEPATH_ERROR_GENERAL. | |
virtual uint32 | AcceptError () |
Accept pending error and return its code, see also INOS_MOVEPATH_ERROR_GENERAL. | |
const char * | GetName () const |
Get move path name. | |
uint32 | GetOptions () const |
Get move path options. | |
virtual uint32 | SetAxis (const char *apName, uint8 auIndex, uint32 auFlags=0x00000000, const char *apType="PosAxis") |
Map given axis name to given index. | |
virtual uint32 | AddResource (const char *apName, uint8 &auIndex, uint32 auFlags=0x00000000, const char *apType="PosAxis") |
Add recource with given recource name and type. | |
virtual uint32 | EditBegin (uint32 auFlags=0x00000002, double adTolerance=-1.0, double adVelocity=-1.0) |
Enter into edit mode. | |
virtual uint32 | EditEnd (bool abIncomplete=false) |
Exit edit mode. | |
virtual uint32 | SegBegin (uint32 auId=0xffffffff, uint32 auFlags=0x00000000, double adTolerance=-1.0, double adVelocity=-1.0) |
Mark the begin of a movepath segment. | |
virtual uint32 | SegEnd () |
Exit segment mode. | |
virtual uint32 | Start (uint8 auIndex, double adPosition) |
Set curve start position of given axis. | |
virtual uint32 | Linear (uint8 auIndex, double adPosition, uint32 auFlags=0) |
Add a linear part to the current segment. | |
virtual uint32 | LinearBay (uint8 auIndex1, uint8 auIndex2, double adPosition1, double adPosition2, double adLength, uint32 auFlags=0) |
Add a linear bay part to the current segment. | |
virtual uint32 | CircleCW (uint8 auIndex1, uint8 auIndex2, double adEnd1, double adEnd2, double adMid1, double adMid2, uint32 auFlags=0) |
Add a clock wise circle part to the current segment. | |
virtual uint32 | CircleCC (uint8 auIndex1, uint8 auIndex2, double adEnd1, double adEnd2, double adMid1, double adMid2, uint32 auFlags=0) |
Add a counter clock wise circle part to the current segment. | |
virtual uint32 | CircleCW (uint8 auIndex1, uint8 auIndex2, double adMid1, double adMid2, double adAngle, bool abAngleAbsolute, uint32 auFlags=0) |
Add a clock wise circle part to the current segment. | |
virtual uint32 | CircleCC (uint8 auIndex1, uint8 auIndex2, double adMid1, double adMid2, double adAngle, bool abAngleAbsolute, uint32 auFlags=0) |
Add a counter clock wise circle part to the current segment. | |
virtual uint32 | CircleCW (uint8 auIndex1, uint8 auIndex2, double adEnd1, double adEnd2, double adRadius, uint32 auFlags=0) |
Add a clock wise circle part to the current segment. | |
virtual uint32 | CircleCC (uint8 auIndex1, uint8 auIndex2, double adEnd1, double adEnd2, double adRadius, uint32 auFlags=0) |
Add a counter clock wise circle part to the current segment. | |
virtual uint32 | NrbBegin (uint32 auId=0xffffffff, uint32 auFlags=0x00000000, uint32 auDegree=3, uint32 auInterpolationPoints=DF_INOS_NURBSCURVE_INTERPOLATION_POINTS, double adVelocity=-1.0) |
Mark the begin of a nurbs curve segment. | |
virtual uint32 | NrbEnd () |
End of nurbs curve segment. | |
virtual uint32 | NrbPoint (double adP0, double adP1, double adWeight=1.0) |
Add a control point to the nurbs curve. | |
virtual uint32 | NrbKnot (double adValue, uint32 auMultiplicity=1) |
Add a control point to the nurbs curve. | |
virtual uint32 | Reset () |
Reset the path, resets curves, interpolators and trajectories does not reset parameters of the movepath. | |
virtual uint32 | SetParam (const char *apName, double adValue) |
Set movepath parameter to given value. | |
virtual uint32 | SetParam (uint8 auIndex, const char *apName, double adValue) |
Set axis specific movepath parameter to given value. | |
virtual uint32 | SetParam (const char *apName, const char *apValue) |
Set movepath parameter to given value. | |
virtual uint32 | SetParam (uint8 auIndex, const char *apName, const char *apValue) |
Set axis specific movepath parameter to given value. | |
virtual uint32 | GetParam (const char *apName, double &adValue, double adDefault=0.0) |
Get movepath parameter. | |
virtual uint32 | GetParam (uint8 auIndex, const char *apName, double &adValue, double adDefault=0.0) |
Get axis specific movepath parameter. | |
virtual uint32 | GetParam (const char *apName, char *apBuffer, uint32 auSize, const char *apDefault="") |
Get movepath parameter. | |
virtual uint32 | GetParam (uint8 auIndex, const char *apName, char *apBuffer, uint32 auSize, const char *apDefault="") |
Get axis specific movepath parameter. | |
virtual uint32 | GetCycleTime (double &adCycleTime) |
Return the path cycle time [sec]. | |
virtual uint32 | GetCycleData (double &adMainCycleTime, uint8 &auMainAxisIndex, inos_std::vector< uint8 > &auMainCycleDownSampling, uint8 &auMainOversampling) |
Return path cycle data. | |
virtual uint32 | GetMoveTime (double &adMoveTime, double adDelta=0.0) |
Return time [sec] the path needs until End - Delta. | |
virtual uint32 | GetMoveTicks (uint64 &adMoveTicks, double arDelta=0.0) |
Return bus ticks the path needs until End - Delta. | |
virtual uint32 | GetMoveLength (double &adMoveLength) |
Return the path length [path units]. | |
virtual uint32 | GetMoveRemaining (double &adMoveRemaining) |
Return the remaining path length [path units]. It can be used to ask for the actual remaining length still needs to move during a running path. At path start it returns adMoveRemaining = PathLength, at the end adMoveRemaining = 0.0. | |
virtual uint32 | GetMaxConstantVelocity (double &adMaxConstantVelocity) |
Return the max. allowed constant velocity the path can be run with without violating any axes limits (V, A, B, J). Axis limits can be set with e.g. SetParam(aIndex, "Amax", value) for the max. allowed acceleration of axis with index 'aIndex'. Deceleration 'Bmax', Velocity 'Vmax' and Jerk 'Jmax'. If no maximum is set, the configured max. values of the corresponding ramp geni are taken. | |
virtual uint32 | AddEvent (const char *apName, double adValue, uint32 auType) |
Return the path cycle time [sec]. | |
virtual uint32 | SetEventDescriptor (struct SINOSMovePathEventDesc *apDesc) |
Set event receiver. | |
virtual CMcResult | Prepare (CINOSSync *apSync=DF_INOS_SYNCHRONOUS) |
Precalculate the path. | |
virtual CMcResult | Prepare (const char *apSpeedset, CINOSSync *apSync=DF_INOS_SYNCHRONOUS) |
Precalculate the path. | |
virtual CMcResult | Run (CINOSSync *apSync=DF_INOS_SYNCHRONOUS) |
Run the path. | |
virtual CMcResult | Run (const char *apSpeedset, CINOSSync *apSync=DF_INOS_SYNCHRONOUS) |
Run the path. | |
virtual uint32 | Append (CINOSSync *apSync=DF_INOS_SYNCHRONOUS) |
Appends curves that have been edited to the path. | |
virtual uint32 | Stop (CINOSSync *apSync=DF_INOS_SYNCHRONOUS) |
Stop the running path. | |
virtual uint32 | Break (CINOSSync *apSync=DF_INOS_SYNCHRONOUS) |
Break the running path. | |
virtual uint32 | Continue (CINOSSync *apSync=DF_INOS_SYNCHRONOUS) |
Continue paused path. | |
virtual CMcResult | Cancel (CINOSSync *apSync=DF_INOS_SYNCHRONOUS) |
Cancel the running path. | |
virtual uint32 | GetData (TINOSMovePathVec &vPos, TINOSMovePathVec &vVel, TINOSMovePathVec &vAcc, TINOSMovePathVec &vJrk) |
Get actual path data. | |
virtual uint32 | GetData (uint32 &auSegmentId, TINOSMovePathVec &vPos, TINOSMovePathVec &vVel, TINOSMovePathVec &vAcc, TINOSMovePathVec &vJrk) |
Get actual path data. | |
virtual CINOSMovePathSegment * | GetActSegment () |
virtual uint32 | CancelData () |
Cancel data from running path (inform trajectory generator, that we don't need data anymore. | |
virtual uint32 | Fail (uint32 auError) |
Cancel running path with a given error. | |
virtual uint32 | GetPositionDelta (TINOSMovePathVec &vDelta) |
Get position delta between end and start of path. | |
virtual bool | GetPosition (uint32 auIndex, TINOSMovePathVec &ovPos) |
get position vector at index auIndex | |
virtual uint32 | GetTorqueLimit () |
get torque limit | |
virtual double | GetEpsilon () |
get path epsilon | |
virtual double | GetTolerance () |
get path tolerance | |
virtual uint32 | GetVmax (TINOSMovePathVec &aVmax) |
get Vmax vector | |
virtual uint32 | GetVtrq (TINOSMovePathVec &aVtrq) |
get Vtrq vector | |
virtual uint32 | GetAmax (TINOSMovePathVec &aAmax) |
get Amax vector | |
virtual uint32 | GetAtrq (TINOSMovePathVec &aAtrq) |
get Atrq vector | |
virtual uint32 | GetBmax (TINOSMovePathVec &aBmax) |
get Bmax vector | |
virtual uint32 | GetBtrq (TINOSMovePathVec &aBtrq) |
get Btrq vector | |
virtual uint32 | GetJmax (TINOSMovePathVec &aJmax) |
get Jmax vector | |
uint32 | SetCurve (CINOSMovePathCurve *apCurve) |
set pointer to path curve (deprecated) | |
CINOSMovePathCurve * | GetCurve () |
get pointer to maincurve | |
CINOSMovePathCurve * | GetEditCurve () |
get pointer to path edit curve | |
CINOSMovePathCurve * | GetPrepareCurve () |
get pointer to path prepare curve | |
CINOSMovePathCurve * | GetRunCurve () |
get pointer to path run curve | |
CINOSMovePathTrajectory * | GetTrajectory () |
get pointer to path trajectory | |
void | SetTrajectory (CINOSMovePathTrajectory *apTrajectory) |
set pointer to path trajectory | |
class CINOSMovePathResourceAxis * | GetAxis (uint32 auIndex) |
get pointer to axis | |
class CINOSMovePathResource * | GetResource (uint32 auIndex) |
void | GetActPosition (TINOSMovePathVec &ovAct) |
get actual axes position vector | |
void | GetPositionFirst (TINOSMovePathVec &ovFirst) |
get first path position vector | |
void | GetPositionLast (TINOSMovePathVec &ovLast) |
get last path position vector | |
bool | GetBufferFillLevel (uint32 &auBufferFillLevel) const |
uint32 | SetMapping (class CINOSMatrix *apMapping) |
Set a virtual to physical axis mapping. | |
uint32 | GetAxesErrorMask () |
Get axes error mask. Returns an axis on error pattern (bit set means, the corresponding axis is on error). This method is e.g. useful to get the indices of the axes which caused an INOS_MOVEPATH_ERROR_TRJ_AXIS_ON_ERROR error. | |
void | SetActiveCallback (tpActiveCallback aCallback) |
void | GetActual (SINOSRampData &aActual) |
Get actual path s,v,a,j. | |
Static Public Member Functions | |
static uint32 | Create (CINOSMovePath *&apPath, uint32 auOptions=uint32(0x00000000)) |
Create a movepath instance. | |
static uint32 | Create (CINOSMovePath *&apPath, const char *apName, uint32 auOptions=uint32(0x00000000)) |
Create a movepath instance with given name. | |
static uint32 | Create (CINOSMovePath *&apPath, const char *apCurveType, const char *apInterpolatorType, const char *apTrajectoryType, uint32 auOptions=uint32(0x00000000)) |
Create a movepath instance. | |
static uint32 | Create (CINOSMovePath *&apPath, const char *apName, const char *apCurveType, const char *apInterpolatorType, const char *apTrajectoryType, uint32 auOptions=uint32(0x00000000)) |
Create a movepath instance with given name. | |
static uint32 | Create (CINOSMovePath *&apPath, const char *apName, const char *apCurveType, const char *apInterpolatorType, const char *apTrajectoryType, const char *apParam, uint32 auOptions=uint32(0x00000000)) |
Create a movepath instance with given name. | |
static uint32 | Destroy (CINOSMovePath *apPath) |
Destroy given movepath. | |
static uint32 | glbSetAxis (const char *apName, uint8 auIndex, uint32 auFlags=0x00000000, uint32 auOptions=uint32(0x00000000)) |
Globally map given axis name to given index. | |
static CINOSBaseAxis * | glbGetAxis (uint8 auIndex) |
Get pointer to globally mapped axis with given index. | |
static uint32 | glbGetActPosition (const char *apName, double &adPosition, uint32 auOptions=uint32(0x00000000)) |
Get actual commanded position of given axis. | |
Public Attributes | |
EState | m_eState |
state | |
uint32 | m_uFlags |
flags | |
uint32 | m_uOptions |
options | |
uint32 | m_uError |
error | |
uint32 | m_uActInvolved |
temporary segment involved | |
CINOSMutex | m_MainMutex |
the main mutex | |
CINOSMovePathCurve * | m_pEditCurve |
pointer to edit curve | |
CINOSMovePathCurve * | m_pRawCurve |
pointer to raw curve | |
CINOSMovePathCurve * | m_pAppendCurve |
pointer to curve to append | |
CINOSMovePathCurve * | m_pPrepareCurve |
pointer to prepare curve | |
CINOSMovePathCurve * | m_pRunCurve |
pointer to run curve | |
CINOSMovePathCurve * | m_pMainCurve |
pointer to main curve | |
CINOSMovePathTrajectory * | m_pTrajectory |
pointer to trajectory | |
class CINOSMovePathHelper * | m_pPrepareHelper |
pointer to prepare helper thread | |
class CINOSMovePathHelper * | m_pRunHelper |
pointer to run helper thread | |
uint32 | m_uLengthMask |
axes flags | |
Protected Member Functions | |
CINOSMovePath (const char *apName, const char *apCurveType, const char *apInterpolatorType, const char *apTrajectoryType, uint32 auOptions) | |
constructor (application should use CINOSMovePath::Create) | |
virtual | ~CINOSMovePath () |
destructor (application should use CINOSMovePath::Destroy) | |
virtual uint32 | iCircle (bool abCw, uint8 auIndex1, uint8 auIndex2, double adEnd1, double adEnd2, double adMid1, double adMid2, uint32 auFlags) |
virtual uint32 | iCircleAngle (bool abCw, uint8 auIndex1, uint8 auIndex2, double adMid1, double adMid2, double adAngle, bool abAngleAbsolute, uint32 auFlags) |
internal circle angle | |
virtual uint32 | iCircleRadius (bool abCw, uint8 auIndex1, uint8 auIndex2, double adEnd1, double adEnd2, double adRadius, uint32 auFlags) |
internal circle radius | |
virtual uint32 | iPrepare (class CINOSTaskExMsg *apMsg) |
internal prepare | |
virtual uint32 | iPrepare (const char *apSpeedSet) |
virtual uint32 | iStartRun (class CINOSTaskExMsg *apMsg) |
internal run | |
virtual uint32 | iStartRun (const char *apSpeedSet, CINOSSync *apSync) |
virtual uint32 | iRun (class CINOSTaskExMsg *apMsg) |
virtual uint32 | iRun (const char *apSpeedSet, CINOSSync *apSync) |
virtual uint32 | iPrepareAppend (class CINOSTaskExMsg *apMsg) |
internal prepare append | |
virtual uint32 | iPrepareAppend (CINOSSync *apSync) |
virtual uint32 | iAppend (class CINOSTaskExMsg *apMsg) |
internal append | |
virtual uint32 | iAppend (CINOSMovePathCurve *apCurve, CINOSSync *apSync) |
virtual uint32 | iStop (class CINOSTaskExMsg *apMsg) |
internal stop | |
virtual uint32 | iBreak (class CINOSTaskExMsg *apMsg) |
internal break | |
virtual uint32 | iContinue (class CINOSTaskExMsg *apMsg) |
internal continue | |
virtual uint32 | iCancel (class CINOSTaskExMsg *apMsg) |
internal cancel | |
virtual uint32 | iCancelData (class CINOSTaskExMsg *apMsg) |
internal cancel data | |
virtual uint32 | iSetParam (uint8 auIndex, const char *apName, double adValue) |
internal set param | |
virtual uint32 | iSetParam (uint8 auIndex, const char *apName, const char *apValue) |
internal set param | |
virtual uint32 | iGetParam (uint8 auIndex, const char *apName, double *adValue, double adDefault) |
internal get param | |
virtual uint32 | iGetParam (uint8 auIndex, const char *apName, char *apValue, uint32 auSize, const char *apDefault) |
internal get param | |
CMcResult | PutMsg (CINOSTaskExMsg *apMsg) |
put message into helpers queue | |
CMcResult | PutCmd (uint32 auCommand, CINOSSync *apSync=DF_INOS_ASYNCHRONOUS) |
put command to queue | |
uint32 | HandleCmd (uint32 auError=INOS_OK) |
check command queue (return auError if no command queue available) | |
uint32 | WaitCmd (uint32 auCommand, uint32 auError=INOS_MOVEPATH_ERROR_NO_COMMAND_QUEUE) |
wait for auCommand or eCmdAbort (return auError if no command queue available) | |
CINOSTaskQueue * | GetCmdQueue () |
get pointer to command queue | |
uint32 | DispatchCmd (CINOSTaskExMsg *apCmd) |
dispatch command | |
uint32 | AddPart (CINOSMovePathPart *apPart, uint32 auFlags) |
add part to actual segment | |
virtual void | SetState (EState aeState) |
set move path state | |
virtual void | SetError (uint32 auError) |
set move path error | |
class TINOSMotionFrame< DF_INOS_MOVEPATH_MAX_AXES > * | GetFrame () |
get currently selected frame | |
struct SINOSMovePathEventDesc * | GetEventDescriptor () |
get event receiver | |
CINCOObject * | RequestRegister () |
return inco registration of path | |
void | ReleaseRegister () |
release inco registration of path | |
Friends | |
class | CINOSMovePathHelper |
class | CINOSMovePathInterpolator |
class | CINOSMovePathInterpolatorBlend |
class | CINOSMovePathInterpolatorClothoid |
class | CINOSMovePathInterpolatorPolynom |
class | CINOSMovePathTrajectory |
template<typename CINOSMovePath > | |
class | CINOSTaskExMsgParam::CPtrContainer |
class | CINOSMcTargetMovePath |
class | CINOSMovePathHelperTest |
void | _INI_0300_CINOSMovePath () |
typedef std::function<uint32(CINOSMovePath*,uint32,TINOSMovePathVec&,TINOSMovePathVec&,TINOSMovePathVec&,TINOSMovePathVec&)> CINOSMovePath::tpActiveCallback |
Set callback method used for active trajectory handling. This callback is called on every sample and let's the application react accordingly if needed.
aCallback | Method called |
|
virtual |
Return the path cycle time [sec].
adCycleTime | Reference to variable where to write the result to |
|
virtual |
Add recource with given recource name and type.
[in] | apName | Name of axis to map |
[in] | auIndex | Out parameter, index the axis name was be mapped to |
[in] | auFlags | Resource flags, only DF_INOS_MOVEPATH_FLAG_NLG valid here |
[in] | apType | Resource type |
|
virtual |
Appends curves that have been edited to the path.
Depending on the state of the previous curves it also prepares and runs the curve.
[in] | apSync | apSync A pointer to a sync object if used asynchronous |
|
virtual |
Break the running path.
[in] | apSync | apSync A pointer to a sync object if used asynchronous |
|
virtual |
Cancel the running path.
[in] | apSync | apSync A pointer to a sync object if used asynchronous |
|
inlinevirtual |
Cancel data from running path (inform trajectory generator, that we don't need data anymore.
|
virtual |
Add a counter clock wise circle part to the current segment.
A circle part is added with the given end and middle coordinates
[in] | auIndex1 | Index of the first involved axis |
[in] | auIndex2 | Index of the second involved axis |
[in] | adEnd1 | Ending position of first axis |
[in] | adEnd2 | Ending position of second axis |
[in] | adMid1 | Circle center position of first axis |
[in] | adMid1 | Circle center position of second axis |
[in] | auFlags | Requested flags, valid flags are DF_INOS_MOVEPATH_FLAG_ABS, DF_INOS_MOVEPATH_FLAG_INC |
|
virtual |
Add a counter clock wise circle part to the current segment.
A circle part is added with the given end coordinates and the requested radius [deg].
[in] | auIndex1 | Index of the first involved axis |
[in] | auIndex2 | Index of the second involved axis |
[in] | adEnd1 | Ending position of first axis |
[in] | adEnd2 | Ending position of second axis |
[in] | adRadius | Requested radius |
[in] | auFlags | Requested flags, valid flags are DF_INOS_MOVEPATH_FLAG_ABS, DF_INOS_MOVEPATH_FLAG_INC |
|
virtual |
Add a counter clock wise circle part to the current segment.
A circle part is added with the given middle coordinates and the requested angle [deg].
[in] | auIndex1 | Index of the first involved axis |
[in] | auIndex2 | Index of the second involved axis |
[in] | adMid1 | Circle center position of first axis |
[in] | adMid1 | Circle center position of second axis |
[in] | adAngle | Requested angle |
[in] | abAngleAbsolute | True if the given angle is an absolute value |
[in] | auFlags | Requested flags, valid flags are DF_INOS_MOVEPATH_FLAG_ABS, DF_INOS_MOVEPATH_FLAG_INC |
|
virtual |
Add a clock wise circle part to the current segment.
A circle part is added with the given end and middle coordinates
[in] | auIndex1 | Index of the first involved axis |
[in] | auIndex2 | Index of the second involved axis |
[in] | adEnd1 | Ending position of first axis |
[in] | adEnd2 | Ending position of second axis |
[in] | adMid1 | Circle center position of first axis |
[in] | adMid1 | Circle center position of second axis |
[in] | auFlags | Requested flags, valid flags are DF_INOS_MOVEPATH_FLAG_ABS, DF_INOS_MOVEPATH_FLAG_INC |
|
virtual |
Add a clock wise circle part to the current segment.
A circle part is added with the given end coordinates and the requested radius [deg].
[in] | auIndex1 | Index of the first involved axis |
[in] | auIndex2 | Index of the second involved axis |
[in] | adEnd1 | Ending position of first axis |
[in] | adEnd2 | Ending position of second axis |
[in] | adRadius | Requested radius |
[in] | auFlags | Requested flags, valid flags are DF_INOS_MOVEPATH_FLAG_ABS, DF_INOS_MOVEPATH_FLAG_INC |
|
virtual |
Add a clock wise circle part to the current segment.
A circle part is added with the given middle coordinates and the requested angle [deg].
[in] | auIndex1 | Index of the first involved axis |
[in] | auIndex2 | Index of the second involved axis |
[in] | adMid1 | Circle center position of first axis |
[in] | adMid1 | Circle center position of second axis |
[in] | adAngle | Requested angle |
[in] | abAngleAbsolute | True if the given angle is an absolute value |
[in] | auFlags | Requested flags, valid flags are DF_INOS_MOVEPATH_FLAG_ABS, DF_INOS_MOVEPATH_FLAG_INC |
|
virtual |
Continue paused path.
[in] | apSync | apSync A pointer to a sync object if used asynchronous |
|
static |
Create a movepath instance.
Creates a movepath instance with the given curve-, interpolator- and trajectory type. If no type is given, default values are taken.
[out] | apPath | Pointer to created movepath instance |
[in] | apCurveType | Required curve type, see also Curve |
[in] | apInterpolatorType | Required interpolator type, see also Interpolator |
[in] | apTrajectoryType | Required trajectory type, see also Trajectory |
[in] | auOptions | Required movepath options, valid options are DF_INOS_MOVEPATH_OPTION_NONE, DF_INOS_MOVEPATH_OPTION_EXCEPTION_SUPPORT, DF_INOS_MOVEPATH_OPTION_ASYNCH_SUPPORT, DF_INOS_MOVEPATH_OPTION_REGISTER_INCO |
|
static |
Create a movepath instance with given name.
Creates a movepath instance with the given curve-, interpolator- and trajectory type. If no type is given, default values are taken.
[out] | apPath | Pointer to created movepath instance |
[in] | apName | Required movepath name |
[in] | apCurveType | Required curve type, see also Curve |
[in] | apInterpolatorType | Required interpolator type, see also Interpolator |
[in] | apTrajectoryType | Required trajectory type, see also Trajectory |
[in] | apParam | A JSON string containing params that need to be available right at the beginning (e.g. Helper.Priority or Helper.Core) |
[in] | auOptions | Required movepath options, valid options are DF_INOS_MOVEPATH_OPTION_NONE, DF_INOS_MOVEPATH_OPTION_EXCEPTION_SUPPORT, DF_INOS_MOVEPATH_OPTION_ASYNCH_SUPPORT, DF_INOS_MOVEPATH_OPTION_REGISTER_INCO |
|
static |
Create a movepath instance with given name.
Creates a movepath instance with the given curve-, interpolator- and trajectory type. If no type is given, default values are taken.
[out] | apPath | Pointer to created movepath instance |
[in] | apName | Required movepath name |
[in] | apCurveType | Required curve type, see also Curve |
[in] | apInterpolatorType | Required interpolator type, see also Interpolator |
[in] | apTrajectoryType | Required trajectory type, see also Trajectory |
[in] | auOptions | Required movepath options, valid options are DF_INOS_MOVEPATH_OPTION_NONE, DF_INOS_MOVEPATH_OPTION_EXCEPTION_SUPPORT, DF_INOS_MOVEPATH_OPTION_ASYNCH_SUPPORT, DF_INOS_MOVEPATH_OPTION_REGISTER_INCO |
|
static |
Create a movepath instance with given name.
Creates a movepath instance and returns a pointer to it. Use default curve-, interpolator- and trajectory type. Default types are defined with system variables MOVEPATH.Curve (default = 'Base'), MOVEPATH.Interpolator (default = 'None') and MOVEPATH.Trajectory (default = 'Constant')
[out] | apPath | Pointer to created movepath instance |
[in] | apName | Required movepath name |
[in] | auOptions | Required movepath options, valid options are DF_INOS_MOVEPATH_OPTION_NONE, DF_INOS_MOVEPATH_OPTION_EXCEPTION_SUPPORT, DF_INOS_MOVEPATH_OPTION_ASYNCH_SUPPORT, DF_INOS_MOVEPATH_OPTION_REGISTER_INCO |
|
static |
Create a movepath instance.
Creates a movepath instance and returns a pointer to it. Use default curve-, interpolator- and trajectory type. Default types are defined with system variables MOVEPATH.Curve (default = 'Base'), MOVEPATH.Interpolator (default = 'None') and MOVEPATH.Trajectory (default = 'Constant')
[out] | apPath | Pointer to created movepath instance |
[in] | auOptions | Required movepath options, valid options are DF_INOS_MOVEPATH_OPTION_NONE, DF_INOS_MOVEPATH_OPTION_EXCEPTION_SUPPORT, DF_INOS_MOVEPATH_OPTION_ASYNCH_SUPPORT, DF_INOS_MOVEPATH_OPTION_REGISTER_INCO |
|
static |
Destroy given movepath.
[in] | apPath | Pointer to movepath to be destroyed |
|
virtual |
Enter into edit mode.
Before defining the geometry of a movepath, one has to enter into edit mode. This ensures an movepath is not changed during its execution. In later versions it will be possible to live adjust the path, but currently it is not.
[in] | auFlags | Required path flags, valid flags are DF_INOS_MOVEPATH_FLAG_ABS, DF_INOS_MOVEPATH_FLAG_INC |
[in] | adTolerance | Requested path tolerance [units]. It depends on the interpolator if this value is taken into account |
[in] | adVelocity | Requested path velocity [units/sec] |
|
virtual |
Exit edit mode.
|
virtual |
Cancel running path with a given error.
|
inline |
Get actual path s,v,a,j.
apHandler | The handler function |
apObject | The handler instance |
uint32 CINOSMovePath::GetAxesErrorMask | ( | ) |
Get axes error mask. Returns an axis on error pattern (bit set means, the corresponding axis is on error). This method is e.g. useful to get the indices of the axes which caused an INOS_MOVEPATH_ERROR_TRJ_AXIS_ON_ERROR error.
bool CINOSMovePath::GetBufferFillLevel | ( | uint32 & | auBufferFillLevel | ) | const |
auBufferFillLevel | will be set to the current buffer fill level. 0 means 'empty'. The value will not be set if the function returns false. One use case may be to check whether the last buffer value has already been pulled to the axes to decide whether a followup-move may already be calculated for the axes part of the movepath. |
|
virtual |
Return path cycle data.
adMainCycleTime | Main path cycle time [sec] |
auMainAxisIndex | Index of main path axis |
adMainCycleDownSampling | Array of down sampling values per axis |
auMainOversampling | Oversampling of main axis (no oversampling = 1) |
|
virtual |
Return the path cycle time [sec].
adCycleTime | Reference to variable where to write the result to |
|
inlinevirtual |
Get actual path data.
Use this method if you selected 'Trajectory.Buffer.Type' = 'passive' to get actual path data and Pull them to the correspinding axis. This has to be done in a hook that runs sysnchronous to the path axes
[out] | vPos | Actual position vector |
[out] | vVel | Actual velocity vector |
[out] | vAcc | Actual acceleration vector |
[out] | vPos | Actual Jerk vector |
|
inlinevirtual |
Get actual path data.
Use this method if you selected 'Trajectory.Buffer.Type' = 'passive' to get actual path data and Pull them to the correspinding axis. This has to be done in a hook that runs sysnchronous to the path axes
[out] | auSegmentId | Actual segment id |
[out] | vPos | Actual position vector |
[out] | vVel | Actual velocity vector |
[out] | vAcc | Actual acceleration vector |
[out] | vPos | Actual Jerk vector |
|
virtual |
Return the max. allowed constant velocity the path can be run with without violating any axes limits (V, A, B, J). Axis limits can be set with e.g. SetParam(aIndex, "Amax", value) for the max. allowed acceleration of axis with index 'aIndex'. Deceleration 'Bmax', Velocity 'Vmax' and Jerk 'Jmax'. If no maximum is set, the configured max. values of the corresponding ramp geni are taken.
adMaxConstantVelocity | Reference to variable where to write the result to |
|
virtual |
Return the path length [path units].
adMoveLength | Reference to variable where to write the result to |
|
virtual |
Return the remaining path length [path units]. It can be used to ask for the actual remaining length still needs to move during a running path. At path start it returns adMoveRemaining = PathLength, at the end adMoveRemaining = 0.0.
adMoveRemaining | Reference to variable where to write the result to |
|
virtual |
Return bus ticks the path needs until End - Delta.
auMoveTicks | Reference to variable where to write the result to |
adDelta | The requested end delta [path units]. |
|
virtual |
Return time [sec] the path needs until End - Delta.
adMoveTime | Reference to variable where to write the result to |
adDelta | The requested end delta [path units]. |
|
virtual |
|
virtual |
|
virtual |
Get axis specific movepath parameter.
[in] | auIndex | Requested axis index |
[in] | apName | Parameter name, see also Parameter |
[in] | apBuffer | Buffer where to write result to |
[in] | auSize | Size [bytes] of given buffer |
[in] | apDefault | Default value, used if parameter not found |
|
virtual |
|
virtual |
Get position delta between end and start of path.
Use this method to get the position delta between the path end and the path start position
[out] | vDelta | The calculated position delta |
|
static |
Get actual commanded position of given axis.
[in] | apName | Name of axis |
[out] | adPosition | Requested position |
[out] | auOptions | Required options for the call, only INOS_MOVEPATH_ERROR_OPTION_EXCEPTION valid here |
|
static |
Get pointer to globally mapped axis with given index.
[in] | auIndex | Index the axis name is to be mapped to |
|
static |
Globally map given axis name to given index.
[in] | apName | Name of axis to map |
[in] | auIndex | Index the axis name is to be mapped to |
[in] | auFlags | Globally valid flags, only DF_INOS_MOVEPATH_FLAG_NLG valid here |
[in] | auOptions | Required options for the call, only INOS_MOVEPATH_ERROR_OPTION_EXCEPTION valid here |
bool CINOSMovePath::IsMoving | ( | ) | const |
|
virtual |
Add a linear part to the current segment.
[in] | auIndex | Index of requested axis |
[in] | adPosition | Requested axis position |
[in] | auFlags | Requested flags, valid flags are DF_INOS_MOVEPATH_FLAG_ABS, DF_INOS_MOVEPATH_FLAG_INC, DF_INOS_MOVEPATH_FLAG_NLG |
|
virtual |
Add a linear bay part to the current segment.
Customer specific part to smoothly enter a bay with a linear and a circular axis
[in] | auIndex1 | Index of the first involved axis |
[in] | auIndex2 | Index of the second involved axis |
[in] | adPosition1 | Requested position of first axis |
[in] | adPosition2 | Requested position of second axis |
[in] | adLength | Smoothing length |
[in] | auFlags | Requested flags, valid flags are DF_INOS_MOVEPATH_FLAG_ABS, DF_INOS_MOVEPATH_FLAG_INC |
|
virtual |
Mark the begin of a nurbs curve segment.
[in] | auId | Requested segment id. This can be any value and can be used to later identify the currently running segment. |
[in] | auFlags | Requested path flags (for future use) |
[in] | auDegree | Requested nurbs curve degree (order - 1), usually 3 |
[in] | auInterpolationPoints | Requested number of interpolation points (e.g. used to calculate curve length) |
[in] | adVelocity | Requested segment velocity [units/sec] |
|
virtual |
End of nurbs curve segment.
|
virtual |
Add a control point to the nurbs curve.
[in] | adP0 | First coordinate of control point |
[in] | adP1 | Second coordinate of control point |
[in] | adP2 | Third coordinate of control point |
[in] | adW | Weight of control point |
Add a control point to the nurbs curve
[in] | adP0 | First coordinate of control point |
[in] | adP1 | Second coordinate of control point |
[in] | adP2 | Third coordinate of control point |
[in] | adP3 | Forth coordinate of control point |
[in] | adW | Weight of control point |
Add a control point to the nurbs curve
[in] | adP0 | First coordinate of control point |
[in] | adP1 | Second coordinate of control point |
[in] | adP2 | Third coordinate of control point |
[in] | adP3 | Forth coordinate of control point |
[in] | adP4 | Fifth coordinate of control point |
[in] | adW | Weight of control point |
Add a knot to the nurbs curve. If no knot given, the nurbs curve is setup with a uniform knot vector
[in] | adValue | Knot value |
[in] | auMultiplicity | Requested knot multiplicity |
|
virtual |
Add a control point to the nurbs curve.
[in] | adP0 | First coordinate of control point |
[in] | adP1 | Second coordinate of control point |
[in] | adW | Weight of control point |
|
virtual |
Precalculate the path.
Precalculation is useful if you have a complex path geometry, which needs time to calculate. A following Run to the path will immediately start the movements.
[in] | apSync | apSync A pointer to a sync object if used asynchronous |
|
virtual |
Precalculate the path.
Precalculation is useful if you have a complex path geometry, which needs time to calculate. A following Run to the path will immediately start the movements.
[in] | apSpeedset | Requested speedset to run the path |
[in] | apSync | apSync A pointer to a sync object if used asynchronous |
|
virtual |
Reset the path, resets curves, interpolators and trajectories does not reset parameters of the movepath.
[in] | apSync | apSync A pointer to a sync object if used asynchronous |
|
virtual |
Run the path.
If you have a complex path, use Precalculate to ensure the path immediately starts at Run
[in] | apSync | apSync A pointer to a sync object if used asynchronous |
|
virtual |
Run the path.
If you have a complex path, use Precalculate to ensure the path immediately starts at Run
[in] | apSpeedset | apSpeedset Requested speedset to run the path |
[in] | apSync | apSync A pointer to a sync object if used asynchronous |
|
virtual |
Mark the begin of a movepath segment.
In a movepath segment, all added geometry parts are done in parallel
[in] | auId | Requested segment id. This can be any value and can be used to later identify the currently running segment. |
[in] | auFlags | Requested path flags, valid flags are DF_INOS_MOVEPATH_FLAG_ABS, DF_INOS_MOVEPATH_FLAG_INC |
[in] | adTolerance | Requested segment tolerance [units]. It depends on the interpolator if this value is taken into account |
[in] | adVelocity | Requested segment velocity [units/sec] |
|
virtual |
Exit segment mode.
|
virtual |
Map given axis name to given index.
[in] | apName | Name of axis to map |
[in] | auIndex | Index the axis name is to be mapped to |
[in] | auFlags | Axis flags, only DF_INOS_MOVEPATH_FLAG_NLG valid here |
[in] | apType | Axis type, only "PosAxis" and "SpeedAxis" valid here |
|
virtual |
Set event receiver.
apDesc | Pointer to event descriptor |
uint32 CINOSMovePath::SetMapping | ( | class CINOSMatrix * | apMapping | ) |
Set a virtual to physical axis mapping.
apMapping | Pointer to the corresponding translation matrix or NULL if current mapping needs to be cleared |
|
virtual |
|
virtual |
|
virtual |
Set axis specific movepath parameter to given value.
[in] | auIndex | Requested axis index |
[in] | apName | Parameter name, see also Parameter |
[in] | apValue | Requested value |
|
virtual |
Set axis specific movepath parameter to given value.
[in] | auIndex | Requested axis index |
[in] | apName | Parameter name, see also Parameter |
[in] | adValue | Requested value |
|
virtual |
Set curve start position of given axis.
This method allows to set an axis starting point of a movepath and is only used if the path has absolute positions.
[in] | auIndex | Index of requested axis |
[in] | adPosition | Requested axis starting position |
|
virtual |
Stop the running path.
[in] | apSync | apSync A pointer to a sync object if used asynchronous |