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

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 배열의 값은 제어 루프 안에서 계속 갱신하는 것을 권장합니다.