최신 버전 정보는 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를 지정하면 컨트롤러가 도달할 수 있는 해를 선택합니다. |
|
eTargetRef |
TCP 포즈의 기준 좌표계(Reference Coordinate System)입니다. |
||
fIterThreshold |
float[NUMBER_OF_ITER_THRESHOULD] |
역기구학 솔버에서 사용하는 반복 임계값으로, |
반환값
값 |
설명 |
|---|---|
계산된 |
참고
이 함수는 컨트롤러가 응답할 때까지 기다립니다.
예제
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);
}
이 예제에서는 반복 임계값을 더 엄격하게 지정해 역기구학 해를 계산합니다. 높은 정확도가 필요한 모션이나 캘리브레이션, 조립 같은 민감한 작업에서 솔버 정밀도를 높일 수 있습니다.