CDRFLEx. set_on_rt_monitoring_data
기능
외부 제어기에서 로봇 제어기 출력 데이터를 수신했을 때 불리는 Callback 함수입니다.
알아두기
- 이 함수 내부에서 printf와 같은 non real-time 함수를 30Hz보다 빠르게 호출하면 안됩니다.
인수
없음
리턴
없음
예제
// callback function
void OnRTMonitoringData(LPRT_OUTPUT_DATA_LIST tData)
{
return;
static int td = 0;
if (td++==1000) {
td = 0;
printf("timestamp : %.3f\n", tData->time_stamp);
printf("actual_joint_position : %f %f %f %f %f %f\n", tData->actual_joint_position[0], tData->actual_joint_position[1], tData->actual_joint_position[2], tData->actual_joint_position[3], tData->actual_joint_position[4], tData->actual_joint_position[5]);
printf("actual_motor_torque : %f %f %f %f %f %f\n", tData->actual_motor_torque[0], tData->actual_motor_torque[1], tData->actual_motor_torque[2], tData->actual_motor_torque[3], tData->actual_motor_torque[4], tData->actual_motor_torque[5]);
printf("actual_grav_torque : %f %f %f %f %f %f\n", tData->gravity_torque[0], tData->gravity_torque[1], tData->gravity_torque[2], tData->gravity_torque[3], tData->gravity_torque[4], tData->gravity_torque[5]);
printf("target torque : %f %f %f %f %f %f\n", tData->target_motor_torque[0], tData->target_motor_torque[1], tData->target_motor_torque[2], tData->target_motor_torque[3], tData->target_motor_torque[4], tData->target_motor_torque[5]);
}
}
// main.cpp
CDRFLEx drfl;
drfl.connect_rt_control();
string version = “v1.0”;
float period = 0.001; // 1 msec
int losscount = 4;
Drfl.set_on_rt_monitoring_data(OnRTMonitoringData);
drfl.set_rt_control_output(version, period, losscount);
drfl.start_rt_control();