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

check_position_condition (자동 모드)

이 함수는 지정한 축의 위치가 목표 위치를 기준으로 정의한 범위 조건을 만족하는지 확인합니다. 주로 자동(실행) 모드에서 자동 모션, 공정 제어, 안전 검증에 사용합니다. 실행 중에 위치를 계속 평가할 수 있어 정렬, 접근 거리, 작업 영역 경계를 실시간으로 확인할 수 있습니다.

다음 모션이나 작업으로 넘어가기 전에 로봇의 TCP가 정의한 위치 범위 안에 있는지 확인하는 데 사용할 수 있습니다.

일반적인 사용법

  • 자동 운전 중에 실시간 위치 조건을 모니터링해 로봇의 TCP가 안전 범위나 목표 구역 안에 있는지 확인합니다.

  • 작업 중에 로봇 위치가 상대 위치 제약이나 절대 위치 제약을 만족하는지 확인합니다.

  • 모션 제어 시스템 안의 반복 조건 검사에 사용해 위치에 따라 동작을 일시 정지하거나 시작합니다.

  • eMode로 절대(eForceReference 기준) 비교와 상대(오프셋) 비교를 전환합니다.
    - MOVE_MODE_ABSOLUTE: 현재 위치를 eForceReference 기준 절대 좌표인 fTargetMin, fTargetMax와 비교합니다.
    - MOVE_MODE_RELATIVE: 목표 포즈로부터의 편차를 비교합니다.

참고

  • MOVE_MODE_RELATIVE에서는 fTargetPos를 BASE 좌표계로 지정하세요.

  • 이 함수는 읽기 전용 모니터링만 하며 모션을 시작하지 않습니다.

예제: 자동 모션 중 위치 범위 확인

// 사전 조건:
// - 로봇 연결됨, 서보 온
// - 자동(Run) 모드 활성
// - 로봇이 자동 작업을 실행 중

// 1) 목표 위치 정의(비교 기준)
float targetPose[6] = {400.f, 500.f, 600.f, 0.f, 180.f, 0.f};

// 2) Z축 상대 오프셋 확인(허용 오차 ±5 mm)
bool relCond = drfl.check_position_condition(FORCE_AXIS_Z, -5.f, 5.f, targetPose, MOVE_MODE_RELATIVE);

// 3) X축 절대 위치 확인(작업 영역 한계)
bool absCond = drfl.check_position_condition(FORCE_AXIS_X, 100.f, 200.f, targetPose, MOVE_MODE_ABSOLUTE, COORDINATE_SYSTEM_BASE);

if (relCond)
    printf("Relative condition met: TCP Z within ±5 mm of target.\n");
else
    printf("Relative condition not met.\n");

if (absCond)
    printf("Absolute condition met: X-axis between 100–200 mm.\n");
else
    printf("Absolute condition not met.\n");

// 4) 예: 상대 조건이 충족될 때까지 반복
while (!relCond) {
    relCond = drfl.check_position_condition(FORCE_AXIS_Z, -5.f, 5.f, targetPose, MOVE_MODE_RELATIVE);
    std::this_thread::sleep_for(std::chrono::milliseconds(200));
}

printf("Target range reached — ready for next task.\n");

이 예제는 자동 모션 중에 로봇의 TCP 위치가 상대 위치 제약과 절대 위치 제약을 모두 만족하는지 확인합니다. 자동 공정 중에 안전 준수, 접근 거리, 작업 완료를 모니터링할 때 사용할 수 있습니다.

팁

  • 작업 영역 경계 확인, 목표 구역 검증, 안전 구역 모니터링에는 MOVE_MODE_ABSOLUTE를 사용하세요.

  • 기준으로부터의 위치 편차가 중요한 미세 정렬 작업(예: 삽입, 정렬)에는 MOVE_MODE_RELATIVE를 사용하세요.

  • check_force_condition과 함께 사용하면 자동 작업 중에 힘-위치 복합 모니터링을 할 수 있습니다.

  • 계속 모니터링하려면 이 함수를 주기적으로(50–200 ms마다) 호출하세요.