최신 버전 정보는 1.33.5에서 확인하세요.
ikin(확장)
이 함수는 작업 공간(Task Space)의 로봇 포즈에 해당하는 조인트 위치를 반환합니다. 반환하는 해는 조인트 형상 8가지 가운데 iSolutionSpace에 해당하는 형상입니다.
정의
DRFLEx.h, CDRFLEx 클래스의 public 섹션
LPINVERSE_KINEMATIC_RESPONSE ikin(
float fSourcePos[NUM_TASK],
unsigned char iSolutionSpace,
COORDINATE_SYSTEM eTargetRef,
unsigned char iRefPosOpt
) {
return _ikin_ex(_rbtCtrl, fSourcePos, iSolutionSpace, eTargetRef, iRefPosOpt);
};
매개변수
매개변수 이름 |
자료형 |
기본값 |
설명 |
|---|---|---|---|
fSourcePos |
float[6] |
6개 축의 목표 작업 위치(역기구학을 계산할 TCP 포즈)입니다. |
|
iSolutionSpace |
unsigned char |
역기구학 형상 8가지 중 하나를 선택하는 관절 형상(Solution Space) 번호(0-7)입니다. 255를 지정하면 컨트롤러가 도달할 수 있는 해를 선택합니다. |
|
eTargetRef |
TCP의 기준 좌표계(Reference Coordinate System)입니다. |
||
iRefPosOpt |
unsigned char |
기준 포즈 옵션입니다. 이 함수는 이 값을 컨트롤러로 보내지 않으므로, 어떤 값을 지정해도 결과가 같습니다. |
반환값
값 |
설명 |
|---|---|
계산된 조인트 위치(및 관련 메타데이터)를 담은 확장 역기구학(Inverse Kinematics) 응답입니다. |
참고
이 함수는 컨트롤러가 응답할 때까지 기다립니다.
반환된 포인터는 CDRFLEx 객체 안의 저장 공간을 가리키며, 이 공간은 다른 DRFL 호출과 재연결 때마다 다시 사용됩니다. 다른 DRFL 함수를 호출하기 전에 구조체를 복사해 두세요. 인수가 3개인 ikin은 프로세스 안의 모든 CDRFLEx 객체가 공유하는 저장 공간에 결과를 반환합니다. ikin을 참고하세요. get_user_home을 제외하면 포인터는 NULL이 아닙니다. 실패 여부를 NULL 검사로 판단하지 마세요.
예제
float x6[6] = { 370.9f, 719.7f, 651.5f, 90.f, -180.f, 0.f };
LPINVERSE_KINEMATIC_RESPONSE res = drfl.ikin(x6, 2, COORDINATE_SYSTEM_BASE, (unsigned char)0);
float q[6] = {0};
for (int i = 0; i < 6; ++i) {
q[i] = res->_fTargetPos[i]; // 계산된 조인트 값 복사
}
drfl.movej(q, 60, 30);
이 예제는 BASE 좌표계에서 TCP 포즈 x6의 역기구학을 관절 형상 = 2, 기준 포즈 옵션 = 0으로 계산합니다. 계산된 조인트 값을 res->_fTargetPos에서 q로 복사한 다음 movej(q, 60, 30)(속도 60, 가속도 30)으로 실행합니다. 같은 TCP 포즈에 대해 다른 유효한 조인트 형상을 선택하려면 다른 관절 형상(0-7)을 사용하세요.