최신 버전 정보는 1.33.5에서 확인하세요.
check_position_condition (수동 모드)
이 절에서는 수동(교시) 작업 중에 check_position_condition으로 지정한 축의 위치가 목표 위치에 대해 정의한 범위 조건을 만족하는지 평가하는 방법을 설명합니다.
이 함수로 교시 루틴 안에 조건부 위치 확인을 넣어, 다음 모션을 실행하기 전에 정렬, 접근 거리, 안전 제약을 확인할 수 있습니다.
일반적인 사용법
다음 단계를 실행하기 전에 로봇 TCP가 특정 위치 범위에 도달했는지 확인합니다.
접근 검증이나 접촉 감지를 위해 상대 또는 절대 위치 오프셋을 모니터링합니다.
while이나if문 안에서 사용해 교시 중 반복 조건 확인을 만듭니다.eMode로 절대(전역) 비교와 상대(오프셋) 비교를 전환합니다.
-MOVE_MODE_ABSOLUTE: 작업 영역 안의 절대 위치를 비교합니다.
-MOVE_MODE_RELATIVE: 목표 포즈로부터의 편차를 비교합니다.
참고
이 함수는 읽기 전용 모니터링만 하며 모션을 시작하지 않습니다.
예제: 수동 교시 중 위치 범위 확인
// 사전 조건:
// - 로봇 연결 및 서보 온
// - 수동(교시) 모드 활성
// - 로봇이 목표 포즈 근처에 있음
// 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마다) 호출하세요.
fTargetPos좌표가 선택한 기준 좌표계(BASE 또는 TOOL)와 일치하는지 항상 확인하세요.