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

ikin(반복 임계값 지정)

이 함수는 목표 TCP 위치(fSourcePos)에 해당하는 조인트 위치를 반환하며, 역기구학 솔버의 반복 임계값을 사용자가 지정할 수 있습니다. 이 확장 버전은 표준 ikin() 함수보다 수치 수렴 동작을 더 세밀하게 제어할 수 있습니다.

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

LPINVERSE_KINEMATIC_RESPONSE ikin(
    float fSourcePos[NUM_TASK],
    unsigned char iSolutionSpace,
    COORDINATE_SYSTEM eTargetRef,
    float fIterThreshold[NUMBER_OF_ITER_THRESHOULD]
) {
    return _ikin_add_iter_threshold(_rbtCtrl, fSourcePos, iSolutionSpace, eTargetRef, fIterThreshold);
};

매개변수

매개변수 이름

자료형

기본값

설명

fSourcePos

float[6]

작업 공간(Task Space)의 목표 TCP 위치(x, y, z, Rx, Ry, Rz)입니다.

iSolutionSpace

unsigned char

관절 형상(Solution Space) 번호(0-7)입니다. 255를 지정하면 컨트롤러가 도달할 수 있는 해를 선택합니다.
역기구학(Inverse Kinematics) 형상 8가지 중 하나를 선택합니다.

eTargetRef

COORDINATE_SYSTEM

TCP 포즈의 기준 좌표계(Reference Coordinate System)입니다.

fIterThreshold

float[NUMBER_OF_ITER_THRESHOULD]

역기구학 솔버에서 사용하는 반복 임계값으로,
조인트 차원별 수렴 정밀도나 허용 오차를 정의합니다.
NUMBER_OF_ITER_THRESHOULD = 2

반환값

값

설명

LPINVERSE_KINEMATIC_RESPONSE

계산된
조인트 위치와 솔버 수렴 정보를 담은 확장 역기구학 응답 구조체입니다.

참고

이 함수는 컨트롤러가 응답할 때까지 기다립니다.

예제

float tcp_target[6] = { 400.0f, 500.0f, 600.0f, 90.0f, 0.0f, 180.0f };

// IK 솔버의 반복 임곗값
// NUMBER_OF_ITER_THRESHOULD = 2로 지정
float iter_th[NUMBER_OF_ITER_THRESHOULD] = { 0.01f, 0.001f };

LPINVERSE_KINEMATIC_RESPONSE result =
    drfl.ikin(tcp_target, 2, COORDINATE_SYSTEM_BASE, iter_th);

if (result && result->_iStatus == 0)
{
    float q[6] = {0};
    for (int i = 0; i < 6; ++i)
        q[i] = result->_fTargetPos[i];

    drfl.movej(q, 60, 30);
}

이 예제에서는 반복 임계값을 더 엄격하게 지정해 역기구학 해를 계산합니다. 높은 정확도가 필요한 모션이나 캘리브레이션, 조립 같은 민감한 작업에서 솔버 정밀도를 높일 수 있습니다.