write_data_rt
이 함수는 외부 컨트롤러의 실시간 입력 데이터를 로봇 컨트롤러에 씁니다. 실시간 외부 제어(Real-time External Control) 모드에서 힘/토크 피드백, 디지털 I/O, 아날로그 I/O 같은 외부 신호를 전송할 때 사용합니다.
정의
DRFLEx.h, CDRFLEx 클래스의 public 섹션
bool write_data_rt(float fExternalForceTorque[NUM_JOINT],
int iExternalDI,
int iExternalDO,
float fExternalAnalogInput[6],
float fExternalAnalogOutput[6]) {
return _write_data_rt(_rbtCtrlUDP,
fExternalForceTorque,
iExternalDI,
iExternalDO,
fExternalAnalogInput,
fExternalAnalogOutput);
};
매개변수
매개변수 이름 |
자료형 |
기본값 |
설명 |
|---|---|---|---|
fExternalForceTorque |
float[6] |
클라이언트가 제공하는 외부 힘/토크 입력입니다. 값 6개입니다. |
|
iExternalDI |
int |
외부 디지털 입력 데이터(16채널)입니다. |
|
iExternalDO |
int |
외부 디지털 출력 데이터(16채널)입니다. |
|
fExternalAnalogInput |
float[6] |
외부 아날로그 입력 값(최대 6채널)입니다. |
|
fExternalAnalogOutput |
float[6] |
외부 아날로그 출력 값(최대 6채널)입니다. |
반환값
값 |
설명 |
|---|---|
1 |
명령을 보냈습니다. 컨트롤러가 명령을 받았거나 적용했다는 뜻은 아닙니다. |
0 |
입력 데이터 데이터그램을 보내지 못했습니다. |
참고
이 함수는 비동기로 동작합니다. 컨트롤러가 명령을 수락하거나 거부할 때까지 기다리지 않고 반환하므로, 반환값 1은 로봇이 명령대로 동작했다는 뜻이 아닙니다. 거부된 명령과 모션 경고 및 오류는 set_on_log_alarm으로 보고됩니다. set_on_rt_log_alarm은 RT 세션 메시지만 보고하므로 두 콜백을 모두 등록하세요.
예제
// 연결 및 RT 통신 시작
drfl.connect_rt_control("192.168.137.100", 12347);
drfl.set_rt_control_input("v1.0", 0.001f, 4);
drfl.set_rt_control_output("v1.0", 0.001f, 4);
drfl.start_rt_control();
// 외부 데이터 배열 정의
float fExternalForceTorque[6] = {100.f, 100.f, 100.f, 100.f, 100.f, 100.f};
int iExternalDI = 1;
int iExternalDO = 2;
float fExternalAnalogInput[6] = {0.f, 0.f, 100.f, 100.f, 100.f, 100.f};
float fExternalAnalogOutput[6] = {0.f, 0.f, 0.f, 0.f, 0.f, 0.f};
// 외부 제어 데이터 전송
if (drfl.write_data_rt(fExternalForceTorque, iExternalDI, iExternalDO,
fExternalAnalogInput, fExternalAnalogOutput))
printf("External RT data written successfully.\n");
else
printf("Failed to write RT data.\n");
drfl.stop_rt_control();
drfl.disconnect_rt_control();
이 예제는 시뮬레이션한 외부 I/O와 힘 데이터를 실시간 UDP 인터페이스로 로봇 컨트롤러에 전송합니다.
팁
write_data_rt는 start_rt_control로 RT 스트리밍을 시작한 뒤에 호출하세요.
fExternalForceTorque나 I/O 배열의 값은 제어 루프 안에서 계속 갱신하는 것을 권장합니다.