최신 버전 정보는 1.33.5에서 확인하세요.
coord_transform
이 함수는 주어진 작업 공간(Task Space) 위치(fTargetPos)를 한 좌표계(eInCoordSystem)에서 다른 좌표계(eOutCoordSystem)로 변환합니다. 월드, 베이스, 툴, 사용자 좌표계 사이의 유효한 모든 변환 조합을 지원합니다.
대표적인 사용 예로는 사용자 정의 좌표계로 나타낸 포즈를 모션 명령용 베이스 좌표로 변환하거나, 툴 TCP 데이터를 월드 공간으로 변환하는 경우가 있습니다.
정의
DRFLEx.h, CDRFLEx 클래스의 public 섹션
LPROBOT_POSE coord_transform(
float fTargetPos[NUM_TASK],
COORDINATE_SYSTEM eInCoordSystem,
COORDINATE_SYSTEM eOutCoordSystem
) {
return _coord_transform(_rbtCtrl, fTargetPos, eInCoordSystem, eOutCoordSystem);
};
지원하는 변환
다음 변환을 지원합니다.
(InCoordSystem) 월드 → (OutCoordSystem) 베이스, 툴, 사용자
(InCoordSystem) 베이스 → (OutCoordSystem) 월드, 툴, 사용자
(InCoordSystem) 툴 → (OutCoordSystem) 월드, 베이스, 사용자
(InCoordSystem) 사용자 → (OutCoordSystem) 월드, 베이스, 툴
모든 기준 좌표계 조합 사이에서 자유롭게 변환할 수 있습니다.
매개변수
매개변수 이름 |
자료형 |
기본값 |
설명 |
|---|---|---|---|
fTargetPos |
float[6] |
변환할 작업 공간 위치(x, y, z, Rx, Ry, Rz)입니다. |
|
eInCoordSystem |
fTargetPos를 나타낸 원본 좌표계입니다. |
||
eOutCoordSystem |
위치를 변환할 대상 좌표계입니다. |
반환값
값 |
설명 |
|---|---|
출력 좌표계로 나타낸 변환된 포즈입니다. |
참고
이 함수는 컨트롤러가 응답할 때까지 기다립니다.
반환된 포인터는 CDRFLEx 객체 안의 저장 공간을 가리키며, 이 공간은 다른 DRFL 호출과 재연결 때마다 다시 사용됩니다. 다른 DRFL 함수를 호출하기 전에 구조체를 복사해 두세요. 인수가 3개인 ikin은 프로세스 안의 모든 CDRFLEx 객체가 공유하는 저장 공간에 결과를 반환합니다. ikin을 참고하세요. get_user_home을 제외하면 포인터는 NULL이 아닙니다. 실패 여부를 NULL 검사로 판단하지 마세요.
예제
float tcp_pose[6] = { 300.f, 100.f, 200.f, 0.f, 180.f, 90.f };
// TCP 포즈를 BASE 좌표계에서 USER 좌표계로 변환
LPROBOT_POSE result = drfl.coord_transform(
tcp_pose,
COORDINATE_SYSTEM_BASE,
COORDINATE_SYSTEM_USER_MIN // 사용자 좌표계 101
);
printf("Transformed X: %.1f\n", result->_fPosition[0]);
이 예제는 베이스 좌표계(Base Coordinate System)로 나타낸 TCP 포즈를 사용자 좌표계(User Coordinate System)로 변환하고, 변환된 X 좌표를 출력합니다. 이 함수는 사용자 좌표계를 캘리브레이션하거나 베이스가 아닌 기준 좌표계를 기준으로 모션을 계획할 때 특히 유용합니다.