CDRFLEx.move_periodic
기능
로봇제어기에서 현재 위치에서 시작하는 상대 모션으로 입력된 기준 좌표계(eMoveReference)의 각 축(병진 및 회전)에 대한 Sine 함수 기반으로 주기 모션을 수행합니다. 각 axis 별 모션의 특성은 fAmplitude와 fPeriodic 에 의해 결정되고, 가감속 시간과 총 모션 시간은 주기, 반복, 횟수에 의해 설정됩니다.
인수
| 인수명 | 자료형 | 기본값 | 범위 | 설명 |
|---|---|---|---|---|
fAmplitude | float[6] | - | >=0 | Amplitude(-amp에서 +amp사이 모션) [mm] or [deg] |
fPeriodic | float[6] | - | >=0 | period(1주기 소요 시간)[sec] |
fAccelTime | float | - | >=0 | Acc-, dec- time [sec] |
nRepeat | unsigned char | - | > 0 | 반복 횟수 |
eMoveReference | enum | MOVE_REFERENCE_TOOL |
| 상수 및 열거형 정의 참조 |
알아두기
- fAmplitude 는 진폭(amplitude)을 의미하며, 각 축(x, y, z, rx, ry, rz) 별로 amp를 값으로 하는 6개 원소의 list 형태로 입력해야 합니다. 단, 주기 모션을 진행하지 않는 축 방향은 amp를 0으로 입력해야 합니다.
- fPeriodic 는 해당 방향 모션의 1회 반복 시간을 의미하며, 각 축(x, y, z, rx, ry, rz) 별 period를 값으로 하는 총 6개 원소의 list 형태로 입력하거나 대표값을 입력해야합니다.
- fAccelTime 은 주기모션의 시작과 끝의 가속 및 감속 시간을 의미합니다. 입력된 가감속시간과 최대주기*1/4 중 큰 값이 적용됩니다. 입력된 가감속 시간이 전체모션시간의 1/2을 초과하는 경우 에러가 발생합니다.
- nRepeat 은 가장 큰 period 값을 가지는 축(기준 축)의 반복 횟수를 정의하며, 이에 따라 총 모션 시간이 결정됩니다. 나머지 축의 반복 횟수는 모션 시간에 따라 자동결정됩니다.모션이 정상 종료되는 경우 종료 위치가 시작 위치와 일치하게 하도록 나머지 축 모션은 기준 축 모션이 종료되기 전에 먼저 종료될 수 있습니다. 모든 축의 모션이 동시 종료되지 않는 경우 감속구간에서의 경로는 이전 경로에서 벗어나게 됩니다. 관련한 사항은 아래 이미지를 참조하십시오


- eMoveReference 는 반복 모션의 기준 좌표계를 의미합니다.
- 모션명령 수행 시 최대속도 에러가 발생하는 경우 다음의 식을 참조하여 진폭 및 주기를 조정할 것을 제안합니다.
최대속도=진폭(amp)*2*pi(3.14)/주기(period)
(예, 진폭=10mm, 주기=1초인 경우 최대속도=62.83mm/sec) - 선행모션과 후행모션에 대한 온라인 블렌딩은 지원하지 않습니다.
리턴
| 값 | 설명 |
|---|---|
0 | 오류 |
1 | 성공 |
예제
<#1>
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);
// Tool 좌표계 x축(10mm 진폭, 1초 주기) 모션과 y회전축(진폭 30deg, 1초 주기)
// 모션이 총 5회 반복 수행
<#2>
float fAmplitude[NUM_TASK] = {10,0,20,0,0.5,0};
float fPeriod[NUM_TASK] = { 1,0,1.5,0,0,0};
drfl.move_periodic (fAmplitude, fPeriod, 0.5, 3, MOVE_REFERENCE_BASE);
// BASE 좌표계 x축(10mm 진폭, 1초 주기), z축(20mm 진폭, 1.5초 주기) 모션이
// 총 3회 반복 수행됨, y회전축 모션은 period가 ‘zero(0)’이므로 미수행
// z축 모션의 주기가 크므로 총 모션 시간은 약 5.5초(1.5초*3회 + 가감속 1초)
// 이며, x축은 4.5회 반복 수행