get_tool_force

이 함수는 로봇 TCP(툴 중심점)에 가해진 힘과 모멘트를 가져옵니다. 힘은 지정한 좌표계(기본값: BASE)를 기준으로 나타냅니다. 내부적으로는 조인트 토크 센서와 로봇의 동역학 모델로 추정합니다.

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

LPROBOT_FORCE get_tool_force(COORDINATE_SYSTEM eTargetRef = COORDINATE_SYSTEM_BASE) {
    return _get_tool_force(_rbtCtrl, eTargetRef);
};

매개변수

매개변수 이름

자료형

기본값

설명

eTargetRef

COORDINATE_SYSTEM

COORDINATE_SYSTEM_BASE

TCP 힘을 나타낼 기준 좌표계(Reference Coordinate System)입니다. COORDINATE_SYSTEM_BASE, COORDINATE_SYSTEM_TOOL, COORDINATE_SYSTEM_WORLD를 지원하며, TOOL과 WORLD는 setup_monitoring_version(1)이 필요합니다.

반환값

값

설명

LPROBOT_FORCE

추정 TCP 힘(Fx, Fy, Fz)과 모멘트(Mx, My, Mz)를 담은 구조체에 대한 포인터입니다.
힘 단위: N, 모멘트 단위: N·m

주의

이 함수는 지원하지 않는 eTargetRef 값을 거부하지 않고, 대신 BASE 값을 반환합니다. 모니터링 버전이 0이면 COORDINATE_SYSTEM_TOOL과 COORDINATE_SYSTEM_WORLD도 BASE 값을 반환합니다. TOOL이나 WORLD를 요청하기 전에 setup_monitoring_version(1)을 호출하세요.

예제

// 로봇 연결과 운용 모드 초기화가 완료되었다고 가정

LPROBOT_FORCE lpForce = drfl.get_tool_force(COORDINATE_SYSTEM_BASE);
if (lpForce) {
    printf("Tool Force and Moment (Base Coordinate)\n");
    printf("Force  [N]:  Fx=%.2f  Fy=%.2f  Fz=%.2f\n",
           lpForce->_fForce[0],
           lpForce->_fForce[1],
           lpForce->_fForce[2]);
    printf("Moment [N·m]: Mx=%.3f  My=%.3f  Mz=%.3f\n",
           lpForce->_fForce[3],
           lpForce->_fForce[4],
           lpForce->_fForce[5]);
} else {
    fprintf(stderr, "Failed to retrieve tool force.\n");
}

이 예제는 베이스 좌표계(Base Coordinate System)로 나타낸 TCP에 현재 가해진 힘과 토크를 출력합니다.
다음 용도로 사용할 수 있습니다.

  • 물체와의 접촉 감지(예: 표면 정렬)

  • 힘 제어(Force Control) 애플리케이션에서 외력(External Force) 측정

  • 순응 제어와 임피던스 제어 응답 검증