check_position_condition_abs (자동 모드)

이 절에서는 자동(실행) 운전 중에 check_position_condition_abs로 특정 축의 절대 위치가 미리 정의한 범위 안에 있는지 확인하는 방법을 설명합니다.

주로 자동 공정에서 모션 완료, 위치 안전, 시퀀스 전환을 확인하는 데 사용합니다.

일반적인 사용법

  • 다음 단계를 실행하기 전에 로봇이 목표 위치 범위에 도달했는지 확인합니다.

  • 자동 운전 중에 TCP가 작업 영역 제한 안에 머무는지 확인합니다.

  • check_force_condition과 함께 사용해 위치-힘 복합 조건을 구현합니다.

  • 반복문이나 조건문에 넣어 모션 기반 판단 로직에 사용합니다.

참고

  • eForceReference = COORDINATE_SYSTEM_TOOL이면 fTargetMin과 fTargetMax를 TOOL 좌표계의 축을 따라 측정한 TCP 위치와 비교합니다.

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

// 사전 조건:
// - 연결됨
// - 서보 온, 자동(Run) 모드 활성

// 1) 동작 경로 정의
float startPos[6] = {400.f, 300.f, 500.f, 180.f, 0.f, 0.f};
float endPos[6]   = {400.f, 300.f, 200.f, 180.f, 0.f, 0.f};

// 2) 목표 위치로 이동
float vel[2] = {80.f, 30.f}, acc[2] = {200.f, 100.f};
drfl.movel(endPos, vel, acc);

// 3) Z축 절대 위치 조건을 계속 확인
bool reached = false;
while (!reached) {
    reached = drfl.check_position_condition_abs(FORCE_AXIS_Z, 195.f, 205.f, COORDINATE_SYSTEM_BASE);
    std::this_thread::sleep_for(std::chrono::milliseconds(100));
}

printf("Target Z-position range reached. Proceeding to next task.\n");
drfl.stop(STOP_TYPE_QUICK);

이 예제에서는 로봇이 아래쪽으로 이동하면서 Z축 절대 위치를 계속 모니터링합니다. TCP가 목표 범위(195–205 mm)에 들어오면 조건이 True가 되고, 로봇은 정지하거나 시퀀스의 다음 단계로 넘어갑니다.

팁

  • 일반적인 작업 영역 모니터링에는 COORDINATE_SYSTEM_BASE를 사용하세요.

  • 정밀한 모션 제어에는 좁은 위치 범위를, 안전 경계에는 넓은 범위를 적용하세요.

  • check_force_condition()과 함께 사용하면 힘과 위치를 동시에 확인할 수 있습니다.

  • 응답성 있고 안전한 자동화 제어를 위해 주기적으로(50–100 ms마다) 폴링하세요.