set_user_cart_coord2 (3점 방식)

이 함수는 입력 포즈 3개(fTargetPos[0], fTargetPos[1], fTargetPos[2])와 기준 좌표계(fTargetRef) 기준 원점 위치(fTargetOrg)로 새 사용자 직교 좌표계를 정의합니다.

입력 포즈 3개로 새 좌표축의 방향과 정렬을 지정합니다.
- X축은 pose₁ → pose₂ 벡터로 정해집니다.
- Z축은 벡터의 외적 (pose₂ − pose₁) × (pose₃ − pose₁)으로 계산합니다.
- Y축은 외적 Z × X로 계산합니다.

사용자 좌표계(User Coordinate System)는 최대 20개까지 만들 수 있습니다. 사용자 좌표계 ID는 101~200입니다. 이 함수로 설정한 좌표계는 클라이언트 프로그램의 연결이 끊긴 후에도 컨트롤러에 남아 있습니다. 오래 사용하려면 작업 셀 설정에 등록하세요.

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

int set_user_cart_coord(
    float fTargetPos[3][NUM_TASK],
    float fTargetOrg[3],
    COORDINATE_SYSTEM fTargetRef = COORDINATE_SYSTEM_BASE
) {
    return _set_user_cart_coord2(_rbtCtrl, fTargetPos, fTargetOrg, fTargetRef);
};

매개변수

매개변수 이름

자료형

기본값

설명

fTargetPos

float[3][6]

새 사용자 좌표계의 평면을 정의하는 목표 작업 위치 3개
- 포즈 #1: 기준 시작점
- 포즈 #2: X축 방향 정의
- 포즈 #3: Z축 방향을 정하는 평면 정의

fTargetOrg

float[3]

새 사용자 좌표계의 원점 위치(X, Y, Z)입니다.

fTargetRef

COORDINATE_SYSTEM

COORDINATE_SYSTEM_BASE

새 좌표계를 정의하는 기준 좌표계입니다.

반환값

값

설명

int

생성한 좌표계의 ID(101–200)입니다.
요청을 보내지 못하면 0을 반환합니다.

예제

// 좌표 평면을 정할 포즈 세 개 정의
float xs[3][6] = {
    {0.0f, 200.0f, 700.0f, 0.0f, 0.0f, 0.0f},
    {0.0f, 700.0f, 0.0f, 0.0f, 0.0f, 0.0f},
    {0.0f, 200.0f, 0.0f, 0.0f, 0.0f, 0.0f}
};

// 원점 위치 설정
float org[3] = {10.0f, 30.0f, 15.0f};

// 세 포즈를 바탕으로 새 사용자 좌표계 등록
int coord_id = drfl.set_user_cart_coord(xs, org, COORDINATE_SYSTEM_BASE);

printf("User coordinate created with ID: %d\n", coord_id);

이 예제는 작업 공간(Task Space) 포즈 3개와 원점 오프셋으로 사용자 직교 좌표계를 정의하고, 베이스 좌표계(Base Coordinate System) 기준으로 등록합니다.