최신 버전 정보는 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마다) 호출하세요.