이전 버전(1.33.4)의 문서를 보고 있습니다. 이 버전은 계속 지원됩니다.
최신 버전 정보는 1.33.5에서 확인하세요.

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

통신 주기(초)입니다.
0.001 s 미만의 값은 입력 워치독을 비활성화합니다. 1.0 s를 넘는 값도 허용됩니다. 이 주기와 출력 주기가 모두 0 이하이면 컨트롤러는 start_rt_control 이후의 모든 RT 명령을 무시합니다.

nLossCnt

int

허용하는 최대 연속 패킷 손실 횟수입니다.
연속으로 손실된 패킷 수가 이 값에 도달하면 RT 연결이 자동으로 종료됩니다.
-1로 설정해도 검사가 비활성화되지 않습니다. 카운터는 마지막 패킷 이후 한 주기가 지나면 1이 되므로, -1, 0, 1 모두 같은 시점에 세션을 종료합니다. 손실을 조금이라도 허용하려면 2 이상을 사용하세요. 제공된 예제는 4를 사용합니다.

참고

  • 이 함수는 반드시 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를 늘리세요. 로봇이 입력 없이 기다리는 시간은 fPeriod x nLossCnt입니다.