check_force_condition (자동 모드)
이 절에서는 자동(실행) 운전 중에 check_force_condition으로 선택한 축에서 측정한 힘이나 토크가 정의한 임계값 안에 있는지 확인하는 방법을 설명합니다.
자동 모션 중의 접촉 감지, 조립 확인, 그 밖의 안전 관련 조건 확인에 주로 사용합니다.
일반적인 사용법
조립이나 삽입 공정 중에 접촉 힘을 모니터링합니다.
표면 접촉이나 체결/압입 작업 완료를 감지합니다.
과도한 힘을 감지하면 작업을 멈추거나 조정하도록 안전 임계값을 구현합니다.
check_position_condition과 함께 사용해 힘-위치 복합 검증을 할 수 있습니다.
제어 루프에 넣어 로봇 동작을 실시간으로 동적으로 조정합니다.
참고
부드러운 피드백 제어를 위해 공정 루프 안에서 주기적으로(예: 50-100 ms마다) 호출할 수 있습니다.
예제: 자동 모드에서 힘 기반 접촉 감지
// 사전 조건:
// - 연결됨
// - 서보 온
// - 자동(Run) 모드 활성
// - F/T 센서 캘리브레이션 완료 또는 내부 힘 추정 활성
// 1) 하강 동작 경로 정의
float fPosStart[6] = {400.f, 300.f, 500.f, 180.f, 0.f, 0.f};
float fPosApproach[6] = {400.f, 300.f, 450.f, 180.f, 0.f, 0.f};
// 2) 대상 표면 근처로 이동
float vel1[2] = {100.f, 50.f}, acc1[2] = {300.f, 100.f};
drfl.movel(fPosStart, vel1, acc1);
drfl.mwait();
// 3) 표면에 천천히 접근
float vel2[2] = {40.f, 15.f}, acc2[2] = {200.f, 100.f};
drfl.movel(fPosApproach, vel2, acc2);
drfl.mwait();
// 4) 접촉 조건 감시: Z축 힘 5 N~20 N
bool contactDetected = false;
while (!contactDetected) {
contactDetected = drfl.check_force_condition(FORCE_AXIS_Z, 5.f, 20.f, COORDINATE_SYSTEM_TOOL);
std::this_thread::sleep_for(std::chrono::milliseconds(50));
}
printf("Surface contact detected (Z force within 5–20 N).\n");
// 5) 동작 정지 또는 다음 단계 실행
drfl.stop(STOP_TYPE_QUICK);
이 예제에서는 자동 모드에서 로봇이 아래쪽으로 이동하면서 측정한 Z축 힘을 계속 확인합니다. 감지한 힘이 정의한 범위(5–20 N)에 들어오면 로봇은 접촉으로 판단하고 모션을 자동으로 정지합니다. 이렇게 하면 접촉 기반 작업을 안정적이고 안전하게 실행할 수 있습니다.
팁
삽입이나 압입 중에 툴 방향 기준으로 힘을 확인하려면
COORDINATE_SYSTEM_TOOL을 사용하세요.툴이나 작업물이 손상되지 않도록 힘 임계값을 적절히 설정하세요.
stop()이나move_pause()와 함께 사용하면 감지 시 자동으로 대응할 수 있습니다.응답성 있는 제어를 위해 짧은 폴링 주기(50-100 ms)를 사용하세요.