move_spiral (자동 모드)

이 함수는 선택한 축(eTaskAxis)에 수직인 평면에서 나선을 그리며 로봇을 이동하고, 동시에 그 축 방향으로도 이동합니다. 나선은 현재 위치에서 시작해 최대 반경과 축 방향 길이에 도달할 때까지 바깥쪽으로 넓어집니다.

movespiral

정의(최대 반경/길이)
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

TASK_AXIS

나선 면에 수직인 축
(나선 경로가 회전하는 평면을 정의)

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

MOVE_REFERENCE

MOVE_REFERENCE_TOOL

나선 모션의 기준 좌표계(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

TASK_AXIS

나선 면에 수직인 축
(나선 경로가 회전하는 평면을 정의)

fRevolution

float

나선의 총 회전 수 [rev > 0]

fTargetPos

float[3]

X, Y, Z 좌표로 나타낸 목표 지점 [mm]
(fMaximuRadius / fMaximumLength 대신 사용)

fTargetVel

float[2]

선속도와 각속도 [mm/s, deg/s]

fTargetAcc

float[2]

선가속도와 각가속도 [mm/s2, deg/s2]

fTargetTime

float

0.0

총 실행 시간 [sec]

eMoveReference

MOVE_REFERENCE

MOVE_REFERENCE_TOOL

나선 모션의 기준 좌표계(BASE / TOOL)

eMoveMode

MOVE_MODE

MOVE_MODE_ABSOLUTE

이동 기준(절대 또는 상대)

eSpiralDir

SPIRAL_DIR

DR_SPIRAL_OUTWARD

나선의 반경 방향
DR_SPIRAL_OUTWARD: 중심에서 바깥쪽으로 넓어짐
DR_SPIRAL_INWARD: 목표 지점을 향해 안쪽으로 좁아짐

eRotDir

ROT_DIR

DR_ROT_FORWARD

축을 중심으로 한 회전 방향
DR_ROT_FORWARD: 정방향 회전(+)
DR_ROT_REVERSE: 역방향 회전(-)

참고

  • fRevolution은 나선 궤적(Trajectory)의 회전 수를 설정합니다.

  • fMaximuRadius는 나선의 최종 반경을 정합니다.

  • fMaximumLength는 나선 축을 따라 이동하는 거리를 지정합니다. 음수이면 축의 반대 방향으로 이동합니다.

  • fTargetVel과 fTargetAcc는 선속도와 각속도 프로파일을 제어합니다.

  • fTargetTime을 지정하면 시간 기준으로 모션을 실행하며, 속도와 가속도는 무시됩니다.

  • eTaskAxis는 나선이 놓일 평면을 선택합니다(예: XY 평면 나선은 TASK_AXIS_Z).

  • eMoveReference는 기준 좌표계(BASE 또는 TOOL)를 정합니다.

  • 이 함수는 다른 모션 명령과의 온라인 블렌딩을 지원하지 않습니다.

movespiral_overview2

주의

  • 나선으로 생기는 회전 가속도가 안전 한계를 넘으면 시스템이 보호를 위해 오류를 발생시킬 수 있습니다. 이 경우 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 상승합니다.

이 명령은 반경 방향으로 넓어지는 부드러운 나선 궤적이 필요한 연마, 표면 스캔, 코팅 작업에 흔히 사용합니다.