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_BASE |
TCP 힘을 나타낼 기준 좌표계(Reference Coordinate System)입니다. COORDINATE_SYSTEM_BASE, COORDINATE_SYSTEM_TOOL, COORDINATE_SYSTEM_WORLD를 지원하며, TOOL과 WORLD는 setup_monitoring_version(1)이 필요합니다. |
반환값
값 |
설명 |
|---|---|
추정 TCP 힘(Fx, Fy, Fz)과 모멘트(Mx, My, Mz)를 담은 구조체에 대한 포인터입니다. |
주의
이 함수는 지원하지 않는 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) 측정
순응 제어와 임피던스 제어 응답 검증