set_accj_rt
이 함수는 실시간 조인트 명령이 사용하는 조인트 가속도를 설정합니다.
servoj_rt: DRCF v2에서는 로봇이 목표 위치에 도달하기 전에 다음 명령이 도착하지 않으면 이 가속도로 감속해 정지합니다. DRCF v3에서는
servoj_rt가 이 값을 사용하지 않고 안전 설정의 조인트 가속도 한계로 정지합니다. 두 버전 모두servoj_rt궤적(Trajectory)을 제한하지는 않습니다.speedj_rt: 모션의 가속도가 이 값을 넘으면 컨트롤러가 정보 메시지를 최대 1초에 한 번 보고하며, 모션을 제한하거나 정지하지는 않습니다. 속도가 바뀌는 모든 조인트에는 0보다 큰 값이 필요하며, 그렇지 않으면 컨트롤러가 경고를 보고합니다.
정의
DRFLEx.h, CDRFLEx 클래스의 public 섹션
bool set_accj_rt(float acc[NUM_JOINT]) {
return _set_accj_rt(_rbtCtrlUDP, acc);
};
매개변수
매개변수 이름 |
자료형 |
기본값 |
설명 |
|---|---|---|---|
acc |
float[6] |
조인트 가속도 [deg/s²]입니다. |
참고
컨트롤러는 start_rt_control로 실시간 제어(Real-time Control)를 시작한 동안에만 이 값을 적용합니다. start_rt_control 전에 보낸 명령은 무시됩니다.
DRCF v2.12.5 이상과 v3.7.0 이상에서는 안전 설정의 조인트 가속도 한계의 5배를 넘는 값을 그 값으로 낮춥니다.
DRCF v2에서 값이 0이면
servoj_rt는 대신 안전 설정의 조인트 가속도 한계로 정지합니다.이 값은 변경하거나 컨트롤러를 재시작할 때까지 유지됩니다. 실시간 제어 세션을 종료해도 초기화되지 않습니다.
반환값
값 |
설명 |
|---|---|
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();
// 조인트 가속도[deg/s²]
float acc[6] = {100.f, 100.f, 100.f, 100.f, 100.f, 100.f};
if (drfl.set_accj_rt(acc))
printf("set_accj_rt sent.\n");
else
printf("set_accj_rt could not be sent.\n");
drfl.disconnect_rt_control();
이 예제는 모든 조인트의 값을 100 deg/s²로 설정합니다.
팁
값이 낮을수록
servoj_rt명령이 끊겼을 때 더 길고 부드럽게 정지합니다.