TOnMasteringNeedCB

이 콜백 함수로 외력(External Force) 때문에 로봇 축이 비틀리거나 어긋났는지 확인합니다. 이 이벤트가 발생하면 원점 복귀(Homing)로 재마스터링(축 정렬)을 해야 합니다. 정렬 완료 여부는 TOnHommingCompletedCB 콜백으로 확인할 수 있습니다.

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

정의 위치: DRFLEx.h

// typedef 정의(DRFL.h)
typedef void (*TOnMasteringNeedCB)();

// 등록 API(내부 + 래퍼)
DRFL_API void _set_on_mastering_need(LPROBOTCONTROL pCtrl, TOnMasteringNeedCB pCallbackFunc);
void set_on_mastering_need(TOnMasteringNeedCB pCallbackFunc)
{
    _set_on_mastering_need(_rbtCtrl, pCallbackFunc);
};

매개변수
없음

반환값
없음

예제

#include "DRFLEx.h"
#include <iostream>
#include <atomic>
#include <thread>
#include <chrono>
using namespace DRAFramework;
using namespace std;

std::atomic<bool> g_bNeedHoming(false);

// 로봇 마스터링(축 정렬)이 필요할 때 호출되는 콜백 함수
void OnMasteringNeedCB()
{
    cout << "[MASTERING] Axis misalignment detected. Requesting homing sequence..." << endl;

    // 메인 루프에 원점 복귀를 요청하고, 여기서는 move_home을 호출하지 마세요
    g_bNeedHoming = true;
}

int main()
{
    CDRFLEx drfl;

    // 로봇 컨트롤러에 연결
    if (!drfl.open_connection("192.168.137.100")) {
        cout << "Failed to connect to controller." << endl;
        return -1;
    }

    // 마스터링 필요 콜백 함수 등록
    drfl.set_on_mastering_need(OnMasteringNeedCB);

    // 메인 루프: 콜백 함수 밖에서 원점 복귀 시작
    while (true)
    {
        if (g_bNeedHoming) {
            g_bNeedHoming = false;
            // 로봇 축 재정렬을 위해 원점 복귀 모드 시작
            drfl.move_home(MOVE_HOME_MECHANIC, 1);
        }
        std::this_thread::sleep_for(std::chrono::milliseconds(100));
    }

    drfl.close_connection();
    return 0;
}

참고

  • 이 콜백은 컨트롤러가 재마스터링이 필요한 축 오프셋을 감지하면 호출됩니다.

  • 이 이벤트를 받으면 자동 원점 복귀나 정렬 과정을 시작할 수 있습니다.

  • 재정렬이 끝났는지는 TOnHommingCompletedCB로 확인하세요.