move_spiral (자동 모드)
이 함수는 선택한 축(eTaskAxis)에 수직인 평면에서 나선을 그리며 로봇을 이동하고, 동시에 그 축 방향으로도 이동합니다. 나선은 현재 위치에서 시작해 최대 반경과 축 방향 길이에 도달할 때까지 바깥쪽으로 넓어집니다.
정의(최대 반경/길이)
DRFLEx.h, CDRFLEx 클래스의 public 섹션
bool move_spiral(TASK_AXIS eTaskAxis,
float fRevolution,
float fMaximuRadius,
float fMaximumLength,
float fTargetVel[2],
float fTargetAcc[2],
float fTargetTime = 0.f,
MOVE_REFERENCE eMoveReference = MOVE_REFERENCE_TOOL) {
return _move_spiral(_rbtCtrl, eTaskAxis, fRevolution, fMaximuRadius,
fMaximumLength, fTargetVel, fTargetAcc,
fTargetTime, eMoveReference);
};
매개변수
매개변수 이름 |
자료형 |
기본값 |
설명 |
|---|---|---|---|
eTaskAxis |
나선 면에 수직인 축 |
||
fRevolution |
float |
나선의 총 회전 수 [rev > 0] |
|
fMaximuRadius |
float |
나선의 최종 반경 [mm] |
|
fMaximumLength |
float |
나선 축을 따라 이동하는 직선 거리 [mm] |
|
fTargetVel |
float[2] |
선속도와 각속도 [mm/s, deg/s] |
|
fTargetAcc |
float[2] |
선가속도와 각가속도 [mm/s2, deg/s2] |
|
fTargetTime |
float |
0.0 |
총 실행 시간 [sec] |
eMoveReference |
|
나선 모션의 기준 좌표계(BASE / TOOL) |
정의(목표 위치)
DRFLEx.h, CDRFLEx 클래스의 public 섹션
bool move_spiral(TASK_AXIS eTaskAxis,
float fRevolution,
float fTargetPos[3],
float fTargetVel[2],
float fTargetAcc[2],
float fTargetTime = 0.f,
MOVE_REFERENCE eMoveReference = MOVE_REFERENCE_TOOL,
MOVE_MODE eMoveMode = MOVE_MODE_ABSOLUTE,
SPIRAL_DIR eSpiralDir = DR_SPIRAL_OUTWARD,
ROT_DIR eRotDir = DR_ROT_FORWARD) {
return _move_spiral_ex(_rbtCtrl, eTaskAxis, fRevolution, fTargetPos,
fTargetVel, fTargetAcc, fTargetTime, eMoveReference,
eMoveMode, eSpiralDir, eRotDir);
};
이 오버로드는 최대 반경과 길이 대신 X, Y, Z 좌표로 나선의 끝점을 정의합니다. 또한 나선 방향, 회전 방향, 이동 모드(절대/상대)를 제어할 수 있습니다. 내부적으로 _move_spiral 대신 _move_spiral_ex를 호출합니다.
매개변수
매개변수 이름 |
자료형 |
기본값 |
설명 |
|---|---|---|---|
eTaskAxis |
나선 면에 수직인 축 |
||
fRevolution |
float |
나선의 총 회전 수 [rev > 0] |
|
fTargetPos |
float[3] |
X, Y, Z 좌표로 나타낸 목표 지점 [mm] |
|
fTargetVel |
float[2] |
선속도와 각속도 [mm/s, deg/s] |
|
fTargetAcc |
float[2] |
선가속도와 각가속도 [mm/s2, deg/s2] |
|
fTargetTime |
float |
0.0 |
총 실행 시간 [sec] |
eMoveReference |
|
나선 모션의 기준 좌표계(BASE / TOOL) |
|
eMoveMode |
|
이동 기준(절대 또는 상대) |
|
eSpiralDir |
|
나선의 반경 방향 |
|
eRotDir |
|
축을 중심으로 한 회전 방향 |
참고
fRevolution은 나선 궤적(Trajectory)의 회전 수를 설정합니다.fMaximuRadius는 나선의 최종 반경을 정합니다.fMaximumLength는 나선 축을 따라 이동하는 거리를 지정합니다. 음수이면 축의 반대 방향으로 이동합니다.fTargetVel과fTargetAcc는 선속도와 각속도 프로파일을 제어합니다.fTargetTime을 지정하면 시간 기준으로 모션을 실행하며, 속도와 가속도는 무시됩니다.eTaskAxis는 나선이 놓일 평면을 선택합니다(예: XY 평면 나선은 TASK_AXIS_Z).eMoveReference는 기준 좌표계(BASE 또는 TOOL)를 정합니다.이 함수는 다른 모션 명령과의 온라인 블렌딩을 지원하지 않습니다.
주의
나선으로 생기는 회전 가속도가 안전 한계를 넘으면 시스템이 보호를 위해 오류를 발생시킬 수 있습니다. 이 경우
fTargetVel이나fTargetAcc를 줄이거나fTargetTime을 늘리세요.
반환값
값 |
설명 |
|---|---|
0 |
오류 |
1 |
성공 |
참고
로봇이 STATE_EMERGENCY_STOP, STATE_SAFE_OFF, STATE_SAFE_OFF2, STATE_SAFE_STOP, STATE_SAFE_STOP2 상태이면 메시지 없이 false를 반환합니다.
예제
// TOOL-Z축을 따라 나선 동작 실행
float rev = 3; // 3회전
float rmax = 30; // 최대 반경: 30 mm
float lmax = 50; // Z축 방향으로 50 mm 이동
float tvel[2] = {50, 50}; // 선속도/각속도
float tacc[2] = {100, 100}; // 선가속도/각가속도
drfl.move_spiral(TASK_AXIS_Z, rev, rmax, lmax, tvel, tacc);
// 로봇이 바깥으로 넓어지는 나선(반경 30 mm)을 그리며
// Z축을 따라 3회전 동안 50 mm 상승합니다.
이 명령은 반경 방향으로 넓어지는 부드러운 나선 궤적이 필요한 연마, 표면 스캔, 코팅 작업에 흔히 사용합니다.