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

servoj (자동 모드)

비동기 모션 명령이므로, 모션이 시작되면 곧바로 다음 명령을 실행합니다. 오버라이드(Override) 모드에서는 연속으로 전달된 명령 가운데 가장 최근의 목표 조인트 위치를 최대 속도와 가속도 범위 안에서 따라갑니다. 큐(Queue) 모드에서는 명령을 저장해 두고 순서대로 따라갑니다. 이 함수는 큐에 쌓인 경유점(Waypoint)을 기다리지 않고 명령을 보내는 즉시 반환합니다. 큐 모드 중에 오버라이드 명령을 전달하면 이전에 저장한 경유점을 무시하고 가장 최근의 목표 조인트 위치를 따라갑니다.

이 API는 자동(실행) 모드에서만 동작합니다. 수동(교시) 모드에서는 동작하지 않습니다.

정의
DRFLEx.h, CDRFLEx 클래스의 public 섹션

bool servoj(float fTargetPos[NUM_JOINT],
            float fLimitVel[NUM_JOINT],
            float fLimitAcc[NUM_JOINT],
            float fTargetTime,
            DR_SERVOJ_TYPE eTargetMod = DR_SERVO_OVERRIDE)
{
    return _servoj(_rbtCtrl, fTargetPos, fLimitVel, fLimitAcc, fTargetTime, eTargetMod);
}

매개변수

매개변수 이름

자료형

기본값

설명

fTargetPos

float[6]

6개 축의 목표 조인트 위치 [deg]입니다.

fLimitVel

float[6]

이 명령에 적용할 축별 속도 제한입니다.

fLimitAcc

float[6]

이 명령에 적용할 축별 가속도 제한입니다.

fTargetTime

float

구간의 목표 모션 시간 [sec]입니다(참고 사항 참조).

eTargetMod

DR_SERVOJ_TYPE

DR_SERVO_OVERRIDE

경유점 실행 모드
DR_SERVO_OVERRIDE: 가장 최근 명령을 따라갑니다(이전 명령 무시).
DR_SERVO_QUEUE: 경유점을 큐에 쌓습니다(보관 후 순서대로 실행).

반환값

값

설명

0

실패

1

성공

참고

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

true를 반환해도 컨트롤러가 요청을 적용했다는 뜻은 아닙니다. get_current_posj, get_current_posx 또는 모니터링 데이터 콜백으로 모션을 확인하세요.

예제

// 사전 조건: 연결됨, 서보 온, **자동 모드** 활성

// 목표 조인트 포즈와 제한값
float q[6]    = { 0.f, 0.f, 90.f, 0.f, 0.f, 0.f };
float jvel[6] = { 10.f, 10.f, 10.f, 10.f, 10.f, 10.f };
float jacc[6] = { 10.f, 10.f, 10.f, 10.f, 10.f, 10.f };

// Override: 가장 최근 목표를 계속 추종
drfl.servoj(q, jvel, jacc, 0.02f, DR_SERVO_OVERRIDE);

// Queue 예제(경유점 버퍼링)
// drfl.servoj(q, jvel, jacc, 0.02f, DR_SERVO_QUEUE);

참고

  • 최대 속도/가속도 제한 때문에 fTargetTime을 맞출 수 없으면 컨트롤러가 시간을 자동으로 조정하며 알림을 표시할 수 있습니다.

  • change_operation_speed의 운용 속도 조정과 연동되지 않습니다(이 설정의 영향을 받지 않음).

  • 큐 모드에서는 명령을 저장해 순서대로 따라갑니다. 큐 모드 중에 오버라이드를 호출하면 버퍼에 쌓인 경로를 지우고 최신 명령을 따라갑니다.