move_periodic (자동 모드)
이 함수는 사인 함수를 따라 각 축의 주기 모션을 실행합니다. 모션은 현재 위치에서 시작하는 상대 주기 궤적(Trajectory)으로 실행되며, 진폭, 주기, 가속 시간, 반복 횟수가 파형을 결정합니다. 각 축(X, Y, Z, Rx, Ry, Rz)을 따로 설정해, 기준 좌표계에 맞춰 동기화된 사인파 모션을 만들 수 있습니다.
정의
DRFLEx.h, CDRFLEx 클래스의 public 섹션
bool move_periodic(float fAmplitude[NUM_TASK],
float fPeriodic[NUM_TASK],
float fAccelTime,
unsigned int nRepeat,
MOVE_REFERENCE eMoveReference = MOVE_REFERENCE_TOOL) {
return _move_periodic(_rbtCtrl, fAmplitude, fPeriodic, fAccelTime, nRepeat, eMoveReference);
};
매개변수
매개변수 이름 |
자료형 |
범위 / 기본값 |
설명 |
|---|---|---|---|
fAmplitude |
float[6] |
≥ 0 |
-fAmplitude와 +fAmplitude 사이를 움직이는 모션의 진폭 [mm] 또는 [deg] (축: x, y, z, Rx, Ry, Rz) |
fPeriodic |
float[6] |
≥ 0 |
모션 한 주기에 걸리는 시간 [sec] |
fAccelTime |
float |
≥ 0 |
가감속 시간 [sec] |
nRepeat |
unsigned char |
> 0 |
주기 반복 횟수 |
eMoveReference |
MOVE_REFERENCE_TOOL |
열거형 정의를 참고하세요 |
참고
fAmplitude는 각 축의 변위 범위를 정합니다. 사용하지 않는 축은 0으로 설정하세요.fPeriodic은 축별로 한 주기를 마치는 데 걸리는 시간을 정합니다. 각 요소는 X, Y, Z, Rx, Ry, Rz에 대응합니다.fAccelTime은 모션 양 끝의 가감속 구간을 지정합니다. 실제로는fAccelTime과, 진폭이 0이 아닌 축 중 가장 긴 주기의 1/4 가운데 큰 값을 적용합니다.fAccelTime이fPeriodic의 가장 긴 주기에nRepeat을 곱한 값의 1/2 이상이면 컨트롤러가 오류를 보고합니다.nRepeat은 주기를 몇 번 반복할지 정합니다. 주기가 더 긴 축이 있으면 그 축이 전체 시간의 기준이 됩니다.모션이 정상적으로 끝나면 주기가 짧은 축이 먼저 끝나고, 모든 축이 주기를 마치면 로봇이 처음 위치로 돌아옵니다.
eMoveReference는 주기 모션을 BASE 좌표계에서 실행할지 TOOL 좌표계에서 실행할지 결정합니다.도달할 수 있는 최대 속도는 다음 식으로 추정할 수 있습니다.
velocity = (Amplitude × 2 × π × 3.14) / Period
예: 진폭 = 10 mm, 주기 = 1 s → 최대 속도 ≈ 62.83 mm/s
다른 모션과의 온라인 블렌딩은 지원하지 않습니다.
반환값
값 |
설명 |
|---|---|
0 |
오류 |
1 |
성공 |
참고
로봇이 STATE_EMERGENCY_STOP, STATE_SAFE_OFF, STATE_SAFE_OFF2, STATE_SAFE_STOP, STATE_SAFE_STOP2 상태이면 메시지 없이 false를 반환합니다.
예제
// CASE 1 — TOOL 기준 주기 모션
float fAmplitude[NUM_TASK] = {10, 0, 0, 0, 30, 0};
float fPeriod[NUM_TASK] = {1, 1, 1, 1, 1, 1};
drfl.move_periodic(fAmplitude, fPeriod, 0.2, 5, MOVE_REFERENCE_TOOL);
// x축(진폭 10 mm, 주기 1초)과 Ry 회전(진폭 30°) 동작을 5회 반복합니다.
// CASE 2 — BASE 기준 주기 모션
float amp2[NUM_TASK] = {10, 20, 0, 0, 0, 5};
float per2[NUM_TASK] = {1, 0, 1.5, 0, 0, 0};
drfl.move_periodic(amp2, per2, 0.5, 3, MOVE_REFERENCE_BASE);
// x축(10 mm, 1초)과 z축(20 mm, 1.5초) 동작을 3회 반복합니다.
// 주기가 0인 축(y, rx, ry 등)은 고정됩니다.
// 총 소요 시간은 약 5.5초이며, x축은 약 4.5주기를 반복합니다.
이 명령은 지정한 각 축에 대해 부드러운 주기 궤적을 만들며, 진동 시험, 진동 캘리브레이션, 동적 툴 시험에 흔히 사용합니다.