.. _auto_amovel: amovel (Auto Mode) ------------------------------------------ As an asynchronous **movel**, it operates the same as the :ref:`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** |br| ``DRFLEx.h`` within class `CDRFLEx`, public section .. code-block:: cpp 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** .. list-table:: :widths: 22 20 18 40 :header-rows: 1 * - **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/s\ :sup:`2`, deg/s\ :sup:`2`] * - fTargetTime - float - ``0.f`` - Reach Time [sec] |br| * If the time is specified, values are processed based on time, ignoring vel and acc. * - eMoveMode - :ref:`MOVE_MODE ` - ``MOVE_MODE_ABSOLUTE`` - Refer to the Definition of Enumeration Type * - eMoveReference - :ref:`MOVE_REFERENCE ` - ``MOVE_REFERENCE_BASE`` - Refer to the Definition of Enumeration Type * - eBlendingType - :ref:`BLENDING_SPEED_TYPE ` - ``BLENDING_SPEED_TYPE_DUPLICATE`` - Refer to the Definition of Enumeration Type * - eAppType - :ref:`DR_MV_APP ` - ``DR_MV_APP_NONE`` - Refer to the Definition of Enumeration Type. Accepted but not sent to the controller. **Return** .. list-table:: :widths: 20 80 :header-rows: 1 * - **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** .. code-block:: cpp #include #include // 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.