amovej (자동 모드)

이 함수는 movej의 비동기 버전으로, 블렌딩용 fBlendingRadius 인수가 없다는 점만 빼면 movej 함수와 같게 동작합니다. 비동기이므로 모션이 시작되면 곧바로 반환하며, 모션이 끝날 때까지 기다리지 않고 다음 코드 줄을 실행합니다.

정의(모든 축에 같은 속도/가속도)
DRFLEx.h, CDRFLEx 클래스의 public 섹션

bool amovej(float fTargetPos[NUM_JOINT],
            float fTargetVel,
            float fTargetAcc,
            float fTargetTime = 0.f,
            MOVE_MODE eMoveMode = MOVE_MODE_ABSOLUTE,
            BLENDING_SPEED_TYPE eBlendingType = BLENDING_SPEED_TYPE_DUPLICATE) {
    return _amovej(_rbtCtrl, fTargetPos, fTargetVel, fTargetAcc,
                   fTargetTime, eMoveMode, eBlendingType);
};

매개변수

매개변수 이름

자료형

기본값

설명

fTargetPos

float[6]

6개 축의 목표 조인트 위치

fTargetVel

float

모든 조인트에 똑같이 적용하는 속도 [deg/s]

fTargetAcc

float

모든 조인트에 똑같이 적용하는 가속도 [deg/s2]

fTargetTime

float

0.f

도달 시간 [sec]

eMoveMode

MOVE_MODE

MOVE_MODE_ABSOLUTE

열거형 정의를 참고하세요

eBlendingType

BLENDING_SPEED_TYPE

BLENDING_SPEED_TYPE_DUPLICATE

열거형 정의를 참고하세요


정의(조인트별 속도/가속도)
DRFLEx.h, CDRFLEx 클래스의 public 섹션

bool amovej(float fTargetPos[NUM_JOINT],
            float fTargetVel[NUM_JOINT],
            float fTargetAcc[NUM_JOINT],
            float fTargetTime = 0.f,
            MOVE_MODE eMoveMode = MOVE_MODE_ABSOLUTE,
            BLENDING_SPEED_TYPE eBlendingType = BLENDING_SPEED_TYPE_DUPLICATE) {
    return _amovej_ex(_rbtCtrl, fTargetPos, fTargetVel, fTargetAcc,
                      fTargetTime, eMoveMode, eBlendingType);
};

이 오버로드는 조인트 축마다 속도와 가속도 제한을 따로 지정할 수 있습니다. 내부적으로 _amovej 대신 _amovej_ex를 호출합니다.

매개변수

매개변수 이름

자료형

기본값

설명

fTargetPos

float[6]

6개 축의 목표 조인트 위치

fTargetVel

float[6]

조인트 축별 속도 제한 [deg/s]

fTargetAcc

float[6]

조인트 축별 가속도 제한 [deg/s2]

fTargetTime

float

0.f

도달 시간 [sec]

eMoveMode

MOVE_MODE

MOVE_MODE_ABSOLUTE

열거형 정의를 참고하세요

eBlendingType

BLENDING_SPEED_TYPE

BLENDING_SPEED_TYPE_DUPLICATE

열거형 정의를 참고하세요

참고

  • fTargetTime을 지정하면 fTargetVel과 fTargetAcc를 무시하고 fTargetTime을 기준으로 모션을 처리합니다.

  • eBlendingType과 속도/가속도 설정에 따른 블렌딩은 movej의 모션 설명을 참고하세요.

반환값

값

설명

0

오류

1

성공

참고

로봇이 STATE_EMERGENCY_STOP, STATE_SAFE_OFF, STATE_SAFE_OFF2, STATE_SAFE_STOP, STATE_SAFE_STOP2 상태이면 메시지 없이 false를 반환합니다.

예제(모든 축에 같은 속도/가속도)

#include <thread>
#include <chrono>

// 예: mwait로 동기화하며 비동기 조인트 공간 동작 시퀀스를 실행합니다.

float q0[6] = { 0.0f, 0.0f, 90.0f, 0.0f, 90.0f, 0.0f };
float q1[6] = { 90.0f, 0.0f, 90.0f, 0.0f, 90.0f, 0.0f };
float q99[6] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f };
float jvel = 10.f;   // 조인트 속도[deg/s]
float jacc = 20.f;   // 조인트 가속도[deg/s²]

// 1) 초기 위치로 동기 이동
drfl.movej(q0, jvel, jacc);

// 2) 다음 명령 전에 3초 대기
std::this_thread::sleep_for(std::chrono::milliseconds(3000));

// 3) q1으로 비동기 동작 시작(대기 없음)
drfl.amovej(q1, jvel, jacc);

// 4) 다음 이동 전에 동작 완료 대기
drfl.mwait();

// 5) 동기화 후 홈 위치로 이동
drfl.movej(q99, jvel, jacc);

예제(조인트별 속도/가속도)

#include <thread>
#include <chrono>

float q0[6] = { 0.0f, 0.0f, 90.0f, 0.0f, 90.0f, 0.0f };
float q1[6] = { 90.0f, 0.0f, 90.0f, 0.0f, 90.0f, 0.0f };
float q99[6] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f };
float jvel[6] = { 10.f, 10.f, 10.f, 10.f, 10.f, 10.f };   // 조인트별 속도[deg/s]
float jacc[6] = { 20.f, 20.f, 20.f, 20.f, 20.f, 20.f };   // 조인트별 가속도[deg/s²]

// 1) 초기 위치로 동기 이동
drfl.movej(q0, jvel, jacc);

// 2) 다음 명령 전에 3초 대기
std::this_thread::sleep_for(std::chrono::milliseconds(3000));

// 3) q1으로 비동기 동작 시작(대기 없음)
drfl.amovej(q1, jvel, jacc);

// 4) 다음 이동 전에 동작 완료 대기
drfl.mwait();

// 5) 동기화 후 홈 위치로 이동
drfl.movej(q99, jvel, jacc);

두 예제 모두 amovej()로 같은 비동기 조인트 공간(Joint Space) 모션 시퀀스를 실행하고, 다음으로 넘어가기 전에 mwait()로 동기화합니다. 조인트별 오버로드를 사용하면 축마다 속도와 가속도 제한을 따로 지정할 수 있어, 조인트마다 회전 거리가 다를 때 유용합니다.