move(3)

NAME
move -- RCCL motion request primitive.

USAGE
#include <rccl.h>

mid = move (mnp, pos)
  MANIP *mnp;
  POS *pos;

ARGUMENTS

mnp --
    Manipulator reference structure.

pos --
    Data structure describing the target position (produced by the command makePosition()).

mid --
    Motion ID. This is a non-negative number either assigned automatically by the system or specified explicitly using setMotionFlag() before the call to move().

RESTRICTIONS
This routine must be called from the planning level.

DESCRIPTION
The move() primitive queues a request to move a manipulator to a target location specified by pos. The trajectory generator will move the robot so the its T6 transform is equal to the solved value of the T6 transform in the target position. If any of the component transforms of the target position are varying in time (see setTransVarb(3)) the robot will track these changes while the motion is in progress.

Parameters controlling various aspects of the motion (e.g., velocity or acceleration) are set prior to the call using various set primitives. Ordinarily, move() returns immediately, before the motion request has completed. move() will block only if the motion queue for that manipulator is full. It is possible to combine this effect with changing the motion queue size (see setMotionQueueSize(3)) to obtain different blocking behaviours.

The returned motion ID value can be used to obtain status information about the motion request (see motionStatus(3)), cancel it (see stopMotion(3)), or wait for it to either begin executing or finish (see waitForStop(3)). Motion IDs assigned by the system are automatically invalidated and reused after NUM_SYSMFLAGS subsequent motion requests (on all manipulators). If this is undesirable, a motion ID can be explicitly set by the program with the primitive setMotionFlag().

DIAGNOSTICS
This routine returns -1 in the event of an error. It will automatically abort the program if the option RCCL_ERROR_EXIT is set (see rcclSetOptions(3)). Error codes and messages are placed on the errorStack (q.v.). The following error codes may be set:

ENoSpace --
    The motion queue does not have enough space to store the requested motion request packet (NOTE: this depends on more than just the motion queue size, because the size of a motion request is variable).

ENoT6 --
    The position equation for the motion request did not contain a T6 transform.

The routine will abort the program if called from the control level.

SEE ALSO
rcclCreate(3), makePosition(3), stop(3), setMotionQueueSize(3), setMotionFlag(3), waitForMotion(3), motionStatus(3), stopMotion(3), setMotionHold(3), rcclSetOptions(3), errorStack(3).