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로 확인하세요.