최신 버전 정보는 1.33.5에서 확인하세요.
set_velx_rt
이 함수는 실시간 서보 모션 제어에서 사용하는 전역 작업 공간(Task Space) 속도 한계를 설정합니다. servol_rt, speedl_rt 같은 작업 공간 명령에 적용되는 선형 속도 한계와 회전 속도 한계를 모두 정의합니다.
정의
DRFLEx.h, CDRFLEx 클래스의 public 섹션
bool set_velx_rt(float fTransVel, float fRotationVel = -10000) {
return _set_velx_rt(_rbtCtrlUDP, fTransVel, fRotationVel);
};
매개변수
매개변수 이름 |
자료형 |
기본값 |
설명 |
|---|---|---|---|
fTransVel |
float |
작업 공간 선형 속도 한계[mm/s]입니다. |
|
fRotationVel |
float |
-10000 |
작업 공간 회전 속도 한계[deg/s]입니다. |
참고
컨트롤러는 start_rt_control로 실시간 제어(Real-time Control)를 시작한 동안에만 이 값을 적용합니다. start_rt_control 전에 보낸 명령은 무시됩니다.
서보 모션 속도가 전역 작업 공간 한계를 넘으면 컨트롤러가 정보 메시지를 생성합니다.
시스템은 모션을 계속하지만, 진단을 위해 이 이벤트를 기록합니다.
회전 속도를 지정하지 않으면 기본값은 병진 속도에서 비례해 계산되므로 모션의 비율이 유지됩니다.
반환값
값 |
설명 |
|---|---|
1 |
명령을 보냈습니다. 컨트롤러가 명령을 받았거나 적용했다는 뜻은 아닙니다. |
0 |
명령 데이터그램을 보내지 못했습니다. |
참고
이 함수는 비동기로 동작합니다. 컨트롤러가 명령을 수락하거나 거부할 때까지 기다리지 않고 반환하므로, 반환값 1은 로봇이 명령대로 동작했다는 뜻이 아닙니다. 거부된 명령과 모션 경고 및 오류는 set_on_log_alarm으로 보고됩니다. set_on_rt_log_alarm은 RT 세션 메시지만 보고하므로 두 콜백을 모두 등록하세요.
예제
drfl.connect_rt_control("192.168.137.100", 12347);
// 컨트롤러는 실시간 제어가 시작된 동안에만 이 값을 적용합니다.
// 입력 주기 0: 이 예제는 명령을 한 번만 보내므로 입력 워치독을 사용하지 않습니다.
std::string version = "v1.0";
drfl.set_rt_control_input(version, 0.0f, 4);
drfl.set_rt_control_output(version, 0.001f, 4);
drfl.start_rt_control();
// 작업 공간 속도 한계 정의
float fTransVel = 100.0f; // 선속도 [mm/s]
float fRotationVel = 60.0f; // 회전 속도 [deg/s]
// 실시간 서보 모션에 작업 공간 속도 한계 적용
if (drfl.set_velx_rt(fTransVel, fRotationVel))
printf("Global task velocity limits set successfully.\n");
else
printf("Failed to set task velocity limits.\n");
drfl.disconnect_rt_control();
이 예제는 최대 작업 공간 속도를 병진 100 mm/s, 회전 60 deg/s로 정의해 실시간 모션을 안정적이고 안전하게 실행하도록 합니다.
팁
speedl_rt 또는 servol_rt 함수와 함께 사용하는 것을 권장합니다.
병진 모션만 필요하면
fRotationVel = -10000으로 설정해 자동으로 비율을 맞추세요.애플리케이션의 안전 요구 사항이나 작업 영역 제약에 맞게 한계를 조정하세요.