이전 버전(1.33.4)의 문서를 보고 있습니다. 이 버전은 계속 지원됩니다.
최신 버전 정보는 1.33.5에서 확인하세요.

check_force_condition (수동 모드)

이 절에서는 수동(교시) 작업 중에 check_force_condition으로 특정 축의 측정된 외력(External Force)이나 토크가 정의한 임계 범위 안에 있는지 모니터링하는 방법을 설명합니다. 주로 수동 교시 중 접촉 감지, 조립 검증, 힘 기반 이벤트 트리거에 사용합니다.

전체 API 정의와 매개변수는
공통 API 섹션의 check_force_condition을 참고하세요.

일반적인 사용법

  • 접촉력이 안전 또는 공정 임계값을 넘는지 감지합니다(예: 누르기나 표면 접촉 중).

  • 핸드가이딩이나 순응 제어(Compliance Control) 중 외력 피드백을 모니터링해 센서 값을 검증합니다.

  • 루프나 조건문 안에서 사용해 목표 힘에 도달하면 동작을 실행합니다.

  • check_position_condition_abs나 check_position_condition_rel과 함께 사용해 힘과 위치를 결합한 로직을 만드세요.

참고

  • 측정한 힘/토크의 절댓값을 비교합니다(방향은 무시).

  • 이 함수는 로봇 모션에 영향을 주지 않으며, 실시간 모니터링이나 로직 제어에 사용합니다.

  • 시각화나 디버깅을 위해 보통 get_tool_force와 함께 사용합니다.

예제: 교시 중 접촉력 모니터링

// 사전 조건:
// - 연결됨
// - 수동(교시) 모드 활성
// - 힘/토크 센서 활성화

printf("Monitoring Z-axis force between 5 N and 10 N...\n");

// 1) 로봇을 손으로 안내하는 동안 힘 조건을 계속 확인
while (true) {
    bool withinRange = drfl.check_force_condition(FORCE_AXIS_Z, 5.f, 10.f, COORDINATE_SYSTEM_TOOL);

    if (withinRange) {
        printf("Force condition met: |Fz| between 5–10 N.\n");
        break;
    }
    std::this_thread::sleep_for(std::chrono::milliseconds(100));
}

// 2) 현재 힘 측정값 확인
LPROBOT_FORCE pForce = drfl.get_tool_force(COORDINATE_SYSTEM_TOOL);
if (pForce) {
    printf("[Force Snapshot] Fx=%.2f Fy=%.2f Fz=%.2f  |  Tx=%.2f Ty=%.2f Tz=%.2f\n",
        pForce->_fForce[0], pForce->_fForce[1], pForce->_fForce[2],
        pForce->_fForce[3], pForce->_fForce[4], pForce->_fForce[5]);
}

printf("Teaching sequence can proceed safely.\n");

이 예제에서 로봇은 Z축 힘의 크기가 5 N에서 10 N 사이인지 계속 확인합니다. 조건을 만족하면 루프를 빠져나오므로, 작업자가 힘 제어(Force Control) 교시나 캘리브레이션 작업을 안전하게 이어 갈 수 있습니다.

팁

  • check_force_condition()으로 접촉, 정렬 압력, 조립 임계값을 실시간으로 감지하세요.

  • 고급 힘 기반 교시에는 task_compliance_ctrl, set_desired_force와 함께 사용하세요.

  • 이 함수는 방향이 아니라 크기만 확인합니다. 방향을 구분해야 하면 부호를 확인하는 로직을 따로 작성하세요.

  • 센서 노이즈로 잘못된 감지가 발생하면 힘 피드백에 필터링이나 평활화를 적용하세요.

  • 시각화하려면 get_tool_force로 실시간 측정값을 기록하세요.

  • 권장 확인 주기: 지연 없이 안정적으로 모니터링하려면 10–50 ms