amovel (Auto Mode)

As an asynchronous movel, it operates the same as the movel function except that it has no fBlendingRadius argument for blending. Because it is asynchronous, the command returns immediately when motion starts and executes the next line without waiting for the motion to terminate.

Definition
DRFLEx.h within class CDRFLEx, public section

bool amovel(float fTargetPos[NUM_TASK],
            float fTargetVel[2],
            float fTargetAcc[2],
            float fTargetTime = 0.f,
            MOVE_MODE eMoveMode = MOVE_MODE_ABSOLUTE,
            MOVE_REFERENCE eMoveReference = MOVE_REFERENCE_BASE,
            BLENDING_SPEED_TYPE eBlendingType = BLENDING_SPEED_TYPE_DUPLICATE,
            DR_MV_APP eAppType = DR_MV_APP_NONE) {
    return _amovel(_rbtCtrl, fTargetPos, fTargetVel, fTargetAcc,
                   fTargetTime, eMoveMode, eMoveReference, eBlendingType, eAppType);
}

Parameter

Parameter Name

Data Type

Default Value

Description

fTargetPos

float[6]

Target TCP Position for six axes [mm, deg]

fTargetVel

float[2]

Linear Velocity, Angular Velocity [mm/s, deg/s]

fTargetAcc

float[2]

Linear Acceleration, Angular Acceleration [mm/s2, deg/s2]

fTargetTime

float

0.f

Reach Time [sec]
* If the time is specified, values are processed based on time, ignoring vel and acc.

eMoveMode

MOVE_MODE

MOVE_MODE_ABSOLUTE

Refer to the Definition of Enumeration Type

eMoveReference

MOVE_REFERENCE

MOVE_REFERENCE_BASE

Refer to the Definition of Enumeration Type

eBlendingType

BLENDING_SPEED_TYPE

BLENDING_SPEED_TYPE_DUPLICATE

Refer to the Definition of Enumeration Type

eAppType

DR_MV_APP

DR_MV_APP_NONE

Refer to the Definition of Enumeration Type. Accepted but not sent to the controller.

Return

Value

Description

0

Error

1

Success

Note

Returns false without a message when the robot is in STATE_EMERGENCY_STOP, STATE_SAFE_OFF, STATE_SAFE_OFF2, STATE_SAFE_STOP or STATE_SAFE_STOP2.

Example

#include <thread>
#include <chrono>

// D-out 2 seconds after the motion starts with x1
float x1[6]  = { 559, 434.5, 651.5, 0, 180, 0 };
float tvel[2] = { 50, 50 };
float tacc[2] = { 100, 100 };
drfl.amovel(x1, tvel, tacc);
std::this_thread::sleep_for(std::chrono::milliseconds(2000));
drfl.set_digital_output(GPIO_CTRLBOX_DIGITAL_INDEX_1, true);

This example starts an asynchronous linear TCP motion to pose x1, then toggles a digital output 2 seconds after motion start. Because it is asynchronous, program flow continues immediately after amovel() is issued.