Actin®  Version 5.2.0
Software for Robotics Simulation and Control
EcGroupMotionManager Class Reference

Holds a PLCopen compliant motion manager class for one axes group. More...

#include <ecGroupMotionManager.h>

Inheritance diagram for EcGroupMotionManager:

Public Types

enum  Status {
  GROUP_STANDBY,
  GROUP_MOVING,
  GROUP_STOPPING,
  GROUP_ERROR_STOP,
  GROUP_INTERRUPTED
}
 status
 
enum  BufferMode {
  BM_ABORTING,
  BM_BUFFERED,
  BM_BLENDING_NEXT
}
 buffer mode
 
enum  TransitionMode { TM_CORNER_DISTANCE }
 transition mode
 
enum  Operation {
  OP_EXECUTE,
  OP_INTERRUPT,
  OP_HALT,
  OP_STOP
}
 operation
 

Public Member Functions

 EcGroupMotionManager ()
 default constructor
 
 EcGroupMotionManager (const EcU32 manipIndex)
 Constructor using system control executive and manipulator index. More...
 
virtual ~EcGroupMotionManager ()
 destructor
 
void setManipulatorIndex (const EcU32 manipIndex)
 Set manipulator index.
 
EcU32 manipulatorIndex () const
 Get manipulator index.
 
void setBufferCapacity (const EcSizeT capacity)
 Set buffer capacity. Must be > 0.
 
Status groupReadStatus () const
 read status
 
EcInt32 moveDirectAbsolute (const EcRealVector &desiredJoint, const EcU32 eeSetIndex, const EcU32 eeIndex, const EcReal speedFactor, const EcReal accelerationFactor, const EcReal decelerationFactor, const EcReal jerkFactor, const BufferMode bufferMode, const TransitionMode transitonMode, const EcReal transitonParam)
 Commands a movement of an axes group to the specified absolute position. More...
 
EcInt32 moveLinearAbsolute (const EcCoordinateSystemTransformation &waypoint, const EcU32 eeSetIndex, const EcU32 eeIndex, const EcReal speedFactor, const EcReal accelerationFactor, const EcReal decelerationFactor, const EcReal jerkFactor, const BufferMode bufferMode, const TransitionMode transitonMode, const EcReal transitonParam)
 Commands a linear movement from the actual pose of the TCP to an absolute pose in the frame the end-effector is relative to. More...
 
EcInt32 moveCircularAbsolute (const EcVector &center, const EcVector &normalDirection, const EcReal arcLengthInRadian, const EcOrientation *pGoalOrientation, const EcU32 eeSetIndex, const EcU32 eeIndex, const EcReal speedFactor, const EcReal accelerationFactor, const EcReal decelerationFactor, const EcReal jerkFactor, const BufferMode bufferMode, const TransitionMode transitonMode, const EcReal transitonParam)
 Commands an interpolated circular movement on an axes group from the actual position of the TCP. More...
 
EcInt32 moveCircularAbsolute (const EcVector &borderPoint, const EcVector &endPoint, const EcOrientation *pGoalOrientation, const EcU32 eeSetIndex, const EcU32 eeIndex, const EcReal speedFactor, const EcReal accelerationFactor, const EcReal decelerationFactor, const EcReal jerkFactor, const BufferMode bufferMode, const TransitionMode transitonMode, const EcReal transitonParam)
 Commands an interpolated circular movement on an axes group from the actual position of the TCP. More...
 
EcInt32 setKinTransform (const EcU32 eeSetIndex, const EcU32 eeIndex, const EcCoordinateSystemTransformation &tcp, const BufferMode bufferMode, EcBaseControlSystemModifier *pModifier=EcNULL)
 Set kinematic transformation between the ACS and MCS. More...
 
EcInt32 setKinTransform (const EcU32 toolOffsetIndex, const EcCoordinateSystemTransformation &tcp, const BufferMode bufferMode, EcBaseControlSystemModifier *pModifier=EcNULL)
 Sets the tool offset given index (in end-effector frame). More...
 
EcBoolean groupInterrupt (const EcReal decelerationFactor, const EcReal jerkFactor)
 Interrupts the ongoing motion, commands a controlled motion stop, and eventually transfers the axes group to the state GROUP_INTERRUPTED. More...
 
EcBoolean groupContinue ()
 Continues motion previously interrupted. More...
 
EcBoolean groupHalt (const EcReal decelerationFactor, const EcReal jerkFactor)
 Aborts any ongoing motion and commands a controlled motion stop. More...
 
void groupStop (const EcReal decelerationFactor, const EcReal jerkFactor)
 Aborts any ongoing motion, commands a controlled motion stop, and eventually transfers the axes group to the state GROUP_ERROR_STOP. More...
 
EcBoolean groupReset ()
 Clears the stop flag and eventually transfers the state to GROUP_STANDBY synchronously if the current state is GROUP_ERROR_STOP. More...
 
EcBoolean addMotion (const EcInterpolatedEndEffectorMotionVector &motions)
 Add interpolated motions to the back of the motion buffer. More...
 
void pauseCurrentInterp ()
 Set the current interpolated motion status to PAUSED. More...
 
void reset ()
 Clears motion buffer, sets the operation to OP_RUN and the state to GROUP_STANDBY.
 
const EcManipulatorMotionBuffer & motionBuffer () const
 get the motion buffer
 
EcBoolean readMotionStatus (const EcInt32 id, EcMotionScriptObject::Status &status, EcReal *pProgress=EcNULL) const
 Get motion status given the motion ID. More...
 
Operation operation () const
 Get the operation.
 
void run (EcBaseControlSystemModifier &modifier, const EcReal currentTime)
 run motions
 

Detailed Description

Holds a PLCopen compliant motion manager class for one axes group.

Examples:
controlExecutiveModifierExampleMain.cpp.

Definition at line 26 of file ecGroupMotionManager.h.

Constructor & Destructor Documentation

EcGroupMotionManager::EcGroupMotionManager ( const EcU32  manipIndex)

Constructor using system control executive and manipulator index.

Parameters
[in]manipIndexmanipulator index

Member Function Documentation

EcBoolean EcGroupMotionManager::addMotion ( const EcInterpolatedEndEffectorMotionVector motions)

Add interpolated motions to the back of the motion buffer.

Returns
True if the current operation <= OP_INTERRUPT and the motion buffer has enough space.
EcBoolean EcGroupMotionManager::groupContinue ( )

Continues motion previously interrupted.

Returns
True if current operation <= OP_INTERRUPT.
See also
groupInterrupt
EcBoolean EcGroupMotionManager::groupHalt ( const EcReal  decelerationFactor,
const EcReal  jerkFactor 
)

Aborts any ongoing motion and commands a controlled motion stop.

The command is used to stop the axes group under normal operation conditions. The relevant axes stay on the path. It is possible to set another motion command in ABORTING mode which will abort this command and will be executed immediately.

Returns
True if current operation <= OP_HALT.
EcBoolean EcGroupMotionManager::groupInterrupt ( const EcReal  decelerationFactor,
const EcReal  jerkFactor 
)

Interrupts the ongoing motion, commands a controlled motion stop, and eventually transfers the axes group to the state GROUP_INTERRUPTED.

The command does not abort the interrupted motion. The relevant axes stay on the path. The interrupted motion can be continued by calling groupContinue.

Returns
True if current operation <= OP_INTERRUPT.
See also
groupContinue
EcBoolean EcGroupMotionManager::groupReset ( )

Clears the stop flag and eventually transfers the state to GROUP_STANDBY synchronously if the current state is GROUP_ERROR_STOP.

Returns
True if the current state == GROUP_ERROR_STOP.
void EcGroupMotionManager::groupStop ( const EcReal  decelerationFactor,
const EcReal  jerkFactor 
)

Aborts any ongoing motion, commands a controlled motion stop, and eventually transfers the axes group to the state GROUP_ERROR_STOP.

The command sets the stop flag (OP_STOP). While the stop flag is set, no motion can be added on the same axes group. The relevant axes stay on the path.

EcInt32 EcGroupMotionManager::moveCircularAbsolute ( const EcVector center,
const EcVector normalDirection,
const EcReal  arcLengthInRadian,
const EcOrientation pGoalOrientation,
const EcU32  eeSetIndex,
const EcU32  eeIndex,
const EcReal  speedFactor,
const EcReal  accelerationFactor,
const EcReal  decelerationFactor,
const EcReal  jerkFactor,
const BufferMode  bufferMode,
const TransitionMode  transitonMode,
const EcReal  transitonParam 
)

Commands an interpolated circular movement on an axes group from the actual position of the TCP.

Parameters
[in]centerthe 3D circle center
[in]normalDirectionthe normal direction of the circle plane
[in]arcLengthInRadianthe arc length in radian. 2pi defines a full circle.
[in]pGoalOrientationthe goal orientation. If NULL, will use the Frenet frame.EcBoolean moveCircular
See also
moveDirectAbsolute
EcInt32 EcGroupMotionManager::moveCircularAbsolute ( const EcVector borderPoint,
const EcVector endPoint,
const EcOrientation pGoalOrientation,
const EcU32  eeSetIndex,
const EcU32  eeIndex,
const EcReal  speedFactor,
const EcReal  accelerationFactor,
const EcReal  decelerationFactor,
const EcReal  jerkFactor,
const BufferMode  bufferMode,
const TransitionMode  transitonMode,
const EcReal  transitonParam 
)

Commands an interpolated circular movement on an axes group from the actual position of the TCP.

Parameters
[in]borderPointthe border point
[in]endPointthe end point
[in]pGoalOrientationthe goal orientation. If NULL, will use the Frenet frame.EcBoolean moveCircular
See also
moveDirectAbsolute
EcInt32 EcGroupMotionManager::moveDirectAbsolute ( const EcRealVector desiredJoint,
const EcU32  eeSetIndex,
const EcU32  eeIndex,
const EcReal  speedFactor,
const EcReal  accelerationFactor,
const EcReal  decelerationFactor,
const EcReal  jerkFactor,
const BufferMode  bufferMode,
const TransitionMode  transitonMode,
const EcReal  transitonParam 
)

Commands a movement of an axes group to the specified absolute position.

Parameters
[in]desiredJointthe target
[in]eeSetIndexthe end effector set index
[in]eeIndexthe end effector index
[in]speedFactorthe speed factor (> 0)
[in]accelerationFactorthe acceleration factor (> 0)
[in]decelerationFactorthe deceleration factor (> 0)
[in]jerkFactorthe jerk factor (> 0)
[in]bufferModethe buffer mode
[in]transitonModethe transition mode
[in]transitonParamthe transition parameter
Returns
The motion ID. If < 0, the motion is not accepted.
Examples:
controlExecutiveModifierExampleMain.cpp.
EcInt32 EcGroupMotionManager::moveLinearAbsolute ( const EcCoordinateSystemTransformation waypoint,
const EcU32  eeSetIndex,
const EcU32  eeIndex,
const EcReal  speedFactor,
const EcReal  accelerationFactor,
const EcReal  decelerationFactor,
const EcReal  jerkFactor,
const BufferMode  bufferMode,
const TransitionMode  transitonMode,
const EcReal  transitonParam 
)

Commands a linear movement from the actual pose of the TCP to an absolute pose in the frame the end-effector is relative to.

Parameters
[in]waypointthe target
See also
moveDirectAbsolute
Examples:
controlExecutiveModifierExampleMain.cpp.
void EcGroupMotionManager::pauseCurrentInterp ( )

Set the current interpolated motion status to PAUSED.

The method is only used to resume the target path when the robot deviates. The method does nothing if there are no motions in the buffer.

EcBoolean EcGroupMotionManager::readMotionStatus ( const EcInt32  id,
EcMotionScriptObject::Status status,
EcReal pProgress = EcNULL 
) const

Get motion status given the motion ID.

Returns
True if the ID is found.
Examples:
controlExecutiveModifierExampleMain.cpp.
EcInt32 EcGroupMotionManager::setKinTransform ( const EcU32  eeSetIndex,
const EcU32  eeIndex,
const EcCoordinateSystemTransformation tcp,
const BufferMode  bufferMode,
EcBaseControlSystemModifier pModifier = EcNULL 
)

Set kinematic transformation between the ACS and MCS.

The command sets the tool offset (in link's primary frame). If bufferMode == ABORTING, pModifer is required, the command executes immediately but does not abort ongoing motion or clear the motion buffer. If bufferMode == BUFFERED, the command is queued in the motion buffer.

Returns
If bufferMode == ABORTING, return < 0 if the modifier is NULL. Otherwise, EcMotionScriptObject::Status. If bufferMode == BUFFERED, return the motion ID.
EcInt32 EcGroupMotionManager::setKinTransform ( const EcU32  toolOffsetIndex,
const EcCoordinateSystemTransformation tcp,
const BufferMode  bufferMode,
EcBaseControlSystemModifier pModifier = EcNULL 
)

Sets the tool offset given index (in end-effector frame).

See also
setKinTransform

The documentation for this class was generated from the following file:
Created by Energid Technologies www.energid.com
Copyright © 2016 Energid. All trademarks mentioned in this document are property of their respective owners.