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

servoj_g (자동 모드)

이 함수는 블렌딩된 속도 및 가속도 프로파일로 연속 궤적(Trajectory)을 실행하는 비동기 조인트 공간(Joint Space) 모션 명령을 보냅니다. 목표 조인트 위치를 실시간으로 갱신하며 다음 모션 명령으로 부드럽게 전환합니다.

이 API는 자동(실행) 모드에서만 동작합니다. 수동(교시) 모드에서는 사용할 수 없습니다.

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

bool servoj_g(float fTargetPos[NUM_JOINT],
              float fTargetVel[NUM_JOINT],
              float fTargetAcc[NUM_JOINT],
              float fTargetTime = 0.f)
{
    return _servoj_g(_rbtCtrl, fTargetPos, fTargetVel, fTargetAcc, fTargetTime);
}

매개변수

매개변수 이름

자료형

기본값

설명

fTargetPos

float[6]

BASE 좌표계 기준 목표 포즈 [X, Y, Z는 mm, Rx, Ry, Rz는 고정 X-Y-Z 각도(deg)]입니다. 이 함수는 조인트 위치를 역기구학(Inverse Kinematics)으로 계산해 배열에 다시 씁니다.

fTargetVel

float[6]

축별 조인트 속도 제한입니다.

fTargetAcc

float[6]

축별 조인트 가속도 제한입니다.

fTargetTime

float

0.0f

목표 전환 시간 [sec]
맞출 수 없으면 자동으로 조정됩니다.

주의

이 함수는 fTargetPos의 6개 요소를 모두 역기구학으로 구한 조인트 위치[deg]로 덮어씁니다. 호출할 때마다 목표 포즈를 새로 복사해 전달하세요. 같은 배열을 다시 사용하면 다음 호출에서 조인트 값을 포즈로 보내게 됩니다.

조인트 위치는 BASE 좌표계 기준 포즈에 대한 관절 형상(Solution Space) 2번(Lefty, Above, No Flip, movejx 참조)의 역기구학 해입니다. 이 함수는 호출할 때마다 컨트롤러에서 이 결과를 받을 때까지 기다리고, 결과를 CDRFLEx 객체가 get_current_posx, get_desired_posx, fkin, ikin, ikin_norm, trans, coord_transform, calc_coord, get_user_home, get_user_cart_coord, flange_serial_read와 공유하는 데이터에 저장합니다. 따라서 이 함수들이 앞서 반환한 포인터는 servoj_g가 반환한 후 덮어쓴 데이터를 가리킵니다. 먼저 구조체를 복사해 두세요. 콜백 안에서 servoj_g를 호출하지 마세요. 콜백 함수 규칙을 참고하세요.

반환값

값

설명

0

실패

1

성공

예제

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

// BASE 기준 목표 포즈[X, Y, Z 단위 mm; Rx, Ry, Rz 단위 deg]
const float target[6] = {400.f, 200.f, 300.f, 180.f, 0.f, 180.f};
float qvel[6] = {10.f, 10.f, 10.f, 10.f, 10.f, 10.f};
float qacc[6] = {20.f, 20.f, 20.f, 20.f, 20.f, 20.f};

// servoj_g는 첫 번째 인수를 덮어쓰므로 호출할 때마다 새 복사본을 전달하세요
float pose[6];
for (int i = 0; i < 6; ++i)
    pose[i] = target[i];

drfl.servoj_g(pose, qvel, qacc, 0.3f);

참고

  • servoj_g는 블렌딩을 적용한 조인트 보간으로 부드럽게 전환합니다.

  • fTargetTime이 하드웨어 한계를 넘으면 자동으로 조정됩니다.

  • servoj_g는 실시간 제어(Real-time Control)와 스트리밍 기반 궤적 갱신에 적합합니다.

  • force/stiffness control이나 change_operation_speed()와 연동되지 않습니다.

  • 동적 경로 제어, 적응형 모션, 궤적 재생 애플리케이션에 사용하는 것을 권장합니다.