check_position_condition_abs (수동 모드)

이 절에서는 수동(교시) 작업 중에 check_position_condition_abs로 특정 축의 절대 위치가 정의한 임계 범위 안에 있는지 확인하는 방법을 설명합니다.

주로 핸드가이딩이나 단계별 교시 중 안전 구역(Safety Zone) 검증, 교시점 확인, 위치에 따른 작업 로직에 사용합니다.

전체 API 정의와 매개변수 목록은 공통 API 섹션의 check_position_condition_abs를 참고하세요.

일반적인 사용법

  • 로봇 TCP나 조인트 위치가 미리 정의한 안전 경계 안에 있는지 검증합니다.

  • 다른 작업을 하기 전에 로봇이 원하는 위치 범위에 도달했는지 모니터링합니다.

  • while이나 if 문 안에서 사용해 조건부 이동 로직을 만듭니다.

  • check_force_condition과 함께 사용해 위치-힘 하이브리드 제어 작업을 구성합니다.

참고

  • 이 함수는 모션을 지령하지 않으며, 내부 피드백의 현재 위치 값만 확인합니다.

예제: 다음 단계 전에 위치 한계 확인

// 사전 조건:
// - 연결됨
// - 수동(교시) 모드 활성
// - 로봇이 목표 영역 근처에 위치

printf("Checking TCP Z-axis position within ±5 mm tolerance...\n");

// 1) BASE 좌표계에서 Z축 절대 위치 범위 모니터링
while (true) {
    bool inZone = drfl.check_position_condition_abs(FORCE_AXIS_Z, -5.f, 5.f, COORDINATE_SYSTEM_BASE);

    if (inZone) {
        printf("Position condition met: Z-axis within ±5 mm.\n");
        break;
    } else {
        printf("Z-axis out of range, adjusting manually...\n");
    }

    std::this_thread::sleep_for(std::chrono::milliseconds(300));
}

// 2) 선택 사항: 안전 또는 확인 점검
bool withinXY = drfl.check_position_condition_abs(FORCE_AXIS_X, -100.f, 100.f)
             && drfl.check_position_condition_abs(FORCE_AXIS_Y, -100.f, 100.f);

if (withinXY)
    printf("Robot within safe XY workspace.\n");
else
    printf("Outside safe XY zone. Adjust before proceeding.\n");

이 예제에서 로봇은 교시 중 Z축 TCP 위치가 기준 평면에서 ±5 mm 안에 있는지 계속 확인합니다. 안전 범위에 들어오면 조건이 TRUE(1)가 되어 작업자가 다음 명령을 안전하게 이어 갈 수 있습니다.

팁

  • 이 함수로 교시 안전장치를 구현해 로봇이 안전 경계 안에 머물도록 하세요.

  • check_force_condition과 함께 사용해 위치 기반 접촉 검증을 하세요.

  • 매끄러운 실시간 모니터링을 위해 이 함수를 주기적으로(예: 50–200 ms마다) 호출할 수 있습니다.

  • 임계값 로직을 적용하기 전에 기준 좌표계(TOOL, BASE, WORLD)가 일관된지 항상 확인하세요.

  • 상대 편차 확인에는 check_position_condition_rel을 사용하세요.