set_rt_control_input
이 함수는 실시간 외부 제어(외부 컨트롤러 → 로봇 컨트롤러)의 입력 데이터 통신 설정을 지정합니다. UDP 기반 입력 스트리밍에 사용할 버전, 갱신 주기, 손실 허용 횟수를 정의합니다.
정의
DRFLEx.h, CDRFLEx 클래스의 public 섹션
bool set_rt_control_input(string strVersion, float fPeriod, int nLossCnt) {
return _set_rt_control_input(_rbtCtrlUDP, strVersion.c_str(), fPeriod, nLossCnt);
};
매개변수
매개변수 이름 |
자료형 |
기본값 |
설명 |
|---|---|---|---|
strVersion |
string |
RT 스트리밍에 사용할 입력 데이터 버전(예: “v1.0”) |
|
fPeriod |
float |
통신 주기(초)입니다. |
|
nLossCnt |
int |
허용하는 최대 연속 패킷 손실 횟수입니다. |
참고
이 함수는 반드시 connect_rt_control 뒤, start_rt_control 전에 호출해야 합니다.
입력 스키마는 get_rt_control_input_version_list가 반환한 버전 중 하나와 일치해야 합니다.
입력 워치독은 이 함수로만 활성화됩니다. 입력 데이터를 보내지 않는 모니터링 전용 세션에서는 이 호출을 생략하고 set_rt_control_output으로 출력만 설정하세요. 이 경우 손실 검사는 적용되지 않습니다.
입력 워치독은 첫 명령이 아니라 start_rt_control 시점부터 카운트를 시작합니다. start_rt_control 후
fPeriod×nLossCnt안에 첫 입력을 보내세요. 그렇지 않으면 컨트롤러가 RT 세션을 종료하고 이후 명령을 무시합니다.워치독은 마지막 명령 이후에도(예: stop 이후) 계속 카운트합니다. 마지막 명령 직후 disconnect_rt_control로 RT 세션을 종료하세요. 그렇지 않으면
fPeriod×nLossCnt뒤에 컨트롤러가 입력 시간 초과 경고와 함께 세션을 종료합니다.
반환값
값 |
설명 |
|---|---|
1 |
설정 데이터그램을 보냈습니다. |
0 |
설정 데이터그램을 보내지 못했습니다. |
참고
이 함수는 컨트롤러가 설정을 확인할 때까지 기다리지 않습니다. 반환값 1은 데이터그램을 보냈다는 뜻일 뿐, 버전, 주기, 손실 횟수가 수락되었다는 뜻은 아닙니다. 거부된 설정은 set_on_rt_log_alarm으로 보고됩니다.
예제
// 연결 후 RT 입력 데이터 설정
drfl.connect_rt_control("192.168.137.100", 12347);
std::string version = "v1.0";
float period = 0.001f; // 1 msec = 1 kHz 주기
int lossCount = 4;
if (drfl.set_rt_control_input(version, period, lossCount))
printf("RT input configuration set successfully.\n");
else
printf("Failed to set RT input configuration.\n");
drfl.disconnect_rt_control();
이 예제는 버전 “v1.0”, 갱신 주기 1 ms, 연속 패킷 손실 허용 횟수 4로 RT 입력을 설정합니다.
팁
안정적으로 동작하려면 네트워크 상태에 따라 0.002 s에서 0.01 s 사이의 주기를 사용하세요.
입력 주기와 출력 주기를 맞추면 실시간 동기화가 더 매끄러워집니다.
연결이 자주 끊기면
nLossCnt를 늘리세요. 로봇이 입력 없이 기다리는 시간은fPeriodxnLossCnt입니다.