set_on_tp_popup (수동 모드)

이 절에서는 수동(교시) 작업에서 set_on_tp_popup을 사용하는 방법을 설명합니다. 이 함수는 DRL 프로그램이나 TP 동작으로 티치펜던트에 팝업 메시지가 뜰 때마다 호출되는 콜백 함수를 등록합니다. 교시 중 팝업에 응답(RESUME/STOP)하거나, 작업자의 결정을 호스트 애플리케이션으로 전달하거나, 사람과 로봇의 상호 작용을 기록할 때 유용합니다.

일반적인 사용법

  • 작업자 확인(예: “클램프가 닫혔습니까?”, “다음 지점으로 조그할 준비가 되었습니까?”)을 표시하고 호스트 PC에서 응답을 받습니다.

  • 교시 모드에서 위험한 동작(예: 장애물 가까이 접근)은 사람이 명시적으로 확인한 뒤에만 실행되도록 막습니다.

  • 교시 세션을 감사하거나 SOP를 안내하기 위해 팝업 내용, 레벨, 버튼 유형을 기록합니다.

참고

  • 연결되어 있는 동안 TP 팝업이 발생할 때마다 콜백이 호출됩니다.

  • 콜백 함수 규칙을 참고하세요.

  • 호스트에서 팝업에 응답하려면 tp_popup_response를 사용하세요.

예제: 팝업 콜백을 등록하고 작업자 선택에 응답하기

// 1) TP 팝업 콜백 함수 정의
void OnTpPopup(LPMESSAGE_POPUP tPopup)
{
    printf("-------------------------------------------\n");
    printf("[TP POPUP]\n");
    printf("Message : %s\n", tPopup->_szText);
    printf("Level   : %d\n", tPopup->_iLevel);       // 0: 정보, 1: 경고, 2: 알람
    printf("Buttons : %d\n", tPopup->_iBtnType);    // 0: 재개/정지, 1: 확인
    printf("-------------------------------------------\n");

    // 2) 교시 모드에서의 간단한 처리 정책 예
    //    - 무해한 정보는 자동으로 확인
    //    - 위험 관련 프롬프트는 작업자가 결정하도록 응답하지 않음
    if (tPopup->_iLevel == MESSAGE_LEVEL_INFO &&
        strstr(tPopup->_szText, "Start jogging") != nullptr)
    {
        // 정보 프롬프트 확인
        drfl.tp_popup_response(POPUP_RESPONSE_RESUME);
        printf("[Host] Auto-acknowledged jogging start.\n");
    }
    else if (strstr(tPopup->_szText, "Near obstacle") != nullptr)
    {
        // 작업자가 TP 버튼을 누르도록 자동 응답하지 않음
        printf("[Host] Waiting for operator decision on TP.\n");
    }
    else
    {
        // 기본: 자동 응답 없음
        printf("[Host] Logged popup. No automatic response.\n");
    }
}

// 사전 조건:
//  - drfl.open_connection("192.168.137.100"); 호출 완료
//  - 컨트롤러가 수동(교시) 모드인 상태
drfl.set_on_tp_popup(OnTpPopup);
printf("[Teach] TP popup callback registered.\n");

// 교시 중 콜백을 수신하도록 프로세스 실행 유지
while (true) std::this_thread::sleep_for(std::chrono::seconds(1));

이 예제에서 호스트 애플리케이션은 티치펜던트(TP)에서 발생하는 팝업 이벤트를 수신합니다. 정보 팝업(예: “Start jogging”)이 뜨면 POPUP_RESPONSE_RESUME을 보냅니다. 반면 “Near obstacle” 같이 위험도가 높은 메시지에서는 일시 정지하고 작업자가 직접 입력할 때까지 기다립니다. 이 방식을 사용하면 수동 개입 권한을 유지하면서도 안전한 반자동 의사 결정 처리를 할 수 있습니다.

팁

  • set_on_tp_log와 함께 사용하면 팝업 스트림과 로그 스트림을 대조해 SOP를 감사할 수 있습니다.

  • TP 입력 양식에는 set_on_tp_get_user_input, tp_get_user_input_response를 함께 사용하세요.

  • 교시 모드에서 팝업 심각도(예: 경고, 알람)를 기록하려면 호스트 PC에서 팝업 레벨(_iLevel)을 기록하세요.

  • 콜백이 자동으로 응답하도록 정책을 정했다면 해당 경우를 명확히 문서화하고, 위험한 동작에는 POPUP_RESPONSE_RESUME을 자동으로 보내지 마세요.