이전 버전(1.33.4)의 문서를 보고 있습니다. 이 버전은 계속 지원됩니다.
최신 버전 정보는 1.33.5에서 확인하세요.

amovesj (자동 모드)

이 함수는 movesj의 비동기 버전입니다. 모션이 끝날 때까지 기다리지 않고 모션이 시작되면 곧바로 반환해 다음 줄을 실행한다는 점만 빼면 movesj()와 같게 동작합니다.
amovesj() 모션이 끝나기 전에 새 모션 명령을 내리면 안전을 위해 오류가 발생합니다. 따라서 새 모션 명령을 실행하기 전에 amovesj()와 다음 모션 명령 사이에서 반드시 mwait()로 amovesj() 모션의 종료를 확인해야 합니다.

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

bool amovesj(float fTargetPos[MAX_SPLINE_POINT][NUM_JOINT],
             unsigned char nPosCount,
             float fTargetVel,
             float fTargetAcc,
             float fTargetTime = 0.f,
             MOVE_MODE eMoveMode = MOVE_MODE_ABSOLUTE) {
    return _amovesj(_rbtCtrl, fTargetPos, nPosCount, fTargetVel,
                    fTargetAcc, fTargetTime, eMoveMode);
};

매개변수

매개변수 이름

자료형

기본값

설명

fTargetPos

float[MAX_SPLINE_POINT][6]

최대 100개의 경유점(Waypoint) 목록

nPosCount

unsigned char

유효한 경유점 수입니다. nPosCount는 1~100이어야 합니다.

fTargetVel

float

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

fTargetAcc

float

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

fTargetTime

float

0.0

도달 시간 [sec]

eMoveMode

MOVE_MODE

MOVE_MODE_ABSOLUTE

상수 및 열거형 정의를 참고하세요


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

bool amovesj(float fTargetPos[MAX_SPLINE_POINT][NUM_JOINT],
             unsigned char nPosCount,
             float fTargetVel[NUMBER_OF_JOINT],
             float fTargetAcc[NUMBER_OF_JOINT],
             float fTargetTime = 0.f,
             MOVE_MODE eMoveMode = MOVE_MODE_ABSOLUTE) {
    return _amovesj_ex(_rbtCtrl, fTargetPos, nPosCount, fTargetVel,
                       fTargetAcc, fTargetTime, eMoveMode);
};

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

매개변수

매개변수 이름

자료형

기본값

설명

fTargetPos

float[MAX_SPLINE_POINT][6]

최대 100개의 경유점(Waypoint) 목록

nPosCount

unsigned char

유효한 경유점 수입니다. nPosCount는 1~100이어야 합니다.

fTargetVel

float[6]

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

fTargetAcc

float[6]

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

fTargetTime

float

0.0

도달 시간 [sec]

eMoveMode

MOVE_MODE

MOVE_MODE_ABSOLUTE

상수 및 열거형 정의를 참고하세요

참고

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

  • eMoveMode가 MOVE_MODE_RELATIVE이면 위치 목록의 각 위치는 바로 앞 위치를 기준으로 한 상대 좌표로 정의됩니다. (위치 목록이 [q1, q2, …, q(n-1), q(n)]이면 q1은 시작점 기준 상대 각도이고, q(n)은 q(n-1) 기준 상대 각도입니다.)

  • 이 함수는 이전 모션과 다음 모션의 온라인 블렌딩을 지원하지 않습니다.

반환값

값

설명

0

오류

1

성공

참고

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

예제

#include <thread>
#include <chrono>

// jpos의 모든 점을 지나는 스플라인 동작 시작 3초 후 D-Out 출력
float jpos[4][6];
float jvel = 10;
float jacc = 10;
unsigned char jposNum = 4;

jpos[0][0]=0;  jpos[0][1]=0;  jpos[0][2]=-30; jpos[0][3]=0;  jpos[0][4]=-30; jpos[0][5]=0;
jpos[1][0]=90; jpos[1][1]=0;  jpos[1][2]=0;   jpos[1][3]=0;  jpos[1][4]=0;   jpos[1][5]=0;
jpos[2][0]=0;  jpos[2][1]=0;  jpos[2][2]=-30; jpos[2][3]=0;  jpos[2][4]=-30; jpos[2][5]=0;
jpos[3][0]=0;  jpos[3][1]=0;  jpos[3][2]=0;   jpos[3][3]=0;  jpos[3][4]=0;   jpos[3][5]=0;

drfl.amovesj(jpos, jposNum, jvel, jacc);
std::this_thread::sleep_for(std::chrono::milliseconds(3000));
drfl.set_digital_output(GPIO_CTRLBOX_DIGITAL_INDEX_1, true);

이 예제는 경유점 4개를 지나는 조인트 스플라인을 비동기로 실행하고, 시작 3초 후 디지털 출력을 전환합니다. 다음 모션을 내리기 전에 mwait()로 스플라인이 끝났는지 확인하세요.