이전 버전(1.33.4)의 문서를 보고 있습니다. 이 버전은 계속 지원됩니다.
최신 버전 정보는 1.33.5에서 확인하세요.

movec (자동 모드)

이 함수는 작업 공간(Task Space)에서 경유점(Waypoint)을 지나 목표 위치까지, 또는 현재 위치에서 지정한 각도만큼 원호를 따라 로봇을 이동합니다. DRCF_VERSION 2와 3에서 사용할 수 있습니다. eOrientation과 eAppType 매개변수는 DRCF_VERSION 2에만 있습니다.

movec

정의
DRFLEx.h, CDRFLEx 클래스의 public 섹션

bool movec(float fTargetPos[2][NUM_TASK],
           float fTargetVel[2],
           float fTargetAcc[2],
           float fTargetTime = 0.f,
           MOVE_MODE eMoveMode = MOVE_MODE_ABSOLUTE,
           MOVE_REFERENCE eMoveReference = MOVE_REFERENCE_BASE,
           float fTargetAngle1 = 0.f,
           float fTargetAngle2 = 0.f,
           float fBlendingRadius = 0.f,
           BLENDING_SPEED_TYPE eBlendingType = BLENDING_SPEED_TYPE_DUPLICATE,
           MOVE_ORIENTATION eOrientation = DR_MV_ORI_TEACH,
           DR_MV_APP eAppType = DR_MV_APP_NONE) {
    return _movec_ex(_rbtCtrl, fTargetPos, fTargetVel, fTargetAcc, fTargetTime,
                     eMoveMode, eMoveReference, fTargetAngle1, fTargetAngle2,
                     fBlendingRadius, eBlendingType, eOrientation, eAppType);
};

매개변수

매개변수 이름

자료형

기본값

설명

fTargetPos[0]

float[6]

경유점 [mm, deg]

fTargetPos[1]

float[6]

목표 위치 [mm, deg]

fTargetVel

float[2]

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

fTargetAcc

float[2]

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

fTargetTime

float

0.0

도달 시간 [sec]

eMoveMode

MOVE_MODE

MOVE_MODE_ABSOLUTE

상수 및 열거형 정의를 참고하세요

eMoveReference

MOVE_REFERENCE

MOVE_REFERENCE_BASE

상수 및 열거형 정의를 참고하세요

fTargetAngle1

float

0.0

angle1

fTargetAngle2

float

0.0

angle2

fBlendingRadius

float

0.0

블렌딩 반경 [mm]

eBlendingType

BLENDING_SPEED_TYPE

BLENDING_SPEED_TYPE_DUPLICATE

상수 및 열거형 정의를 참고하세요

eOrientation

MOVE_ORIENTATION

DR_MV_ORI_TEACH

툴의 자세 제어 옵션

eAppType

DR_MV_APP

DR_MV_APP_NONE

모션에 대한 애플리케이션 힌트(컨트롤러가 지원하는 경우)

참고

  • fTargetVel에 값을 전달하면(예: {30, 0}) 입력값은 모션의 선속도에 해당하며, 각속도는 선속도에 비례해 결정됩니다.

  • fTargetAcc에 값을 전달하면(예: {60, 0}) 입력값은 모션의 선가속도에 해당하며, 각가속도는 선가속도에 비례해 결정됩니다.

  • fTargetTime을 지정하면 fTargetVel과 fTargetAcc를 무시하고 fTargetTime을 기준으로 처리합니다.

  • eMoveMode가 MOVE_MODE_RELATIVE이면 fTargetPos[0]과 fTargetPos[1]은 이전 위치를 기준으로 한 상대 좌표계로 정의됩니다. (fTargetPos[0]은 시작점 기준 상대 좌표이고, fTargetPos[1]은 fTargetPos[0] 기준 상대 좌표입니다.)

  • fTargetAngle1이 0보다 크고 fTargetAngle2가 0이면, fTargetAngle1이 원호 경로의 총 회전 각도로 적용됩니다.

  • fTargetAngle1과 fTargetAngle2가 모두 0보다 크면 fTargetAngle1은 원호 경로에서 등속으로 움직이는 총 회전 각도이고, fTargetAngle2는 가감속을 위한 회전 구간의 회전 각도입니다. 이때 원호 경로를 따라 움직이는 총 각도는 fTargetAngle1 + 2 × fTargetAngle2입니다.

    movec_overview2

주의

다음 모션을 eBlendingType이 BLENDING_SPEED_TYPE_DUPLICATE이고 fBlendingRadius > 0인 조건으로 블렌딩할 때, 이전 모션의 남은 모션 시간(이전 모션의 남은 거리, 속도, 가속도로 결정)이 다음 모션의 모션 시간보다 길면 이전 모션이 다음 모션보다 늦게 끝날 수 있습니다. 자세한 내용은 다음 그림을 참고하세요.

반환값

값

설명

0

오류

1

성공

참고

로봇이 STATE_EMERGENCY_STOP, STATE_SAFE_OFF, STATE_SAFE_OFF2, STATE_SAFE_STOP, STATE_SAFE_STOP2 상태이면 메시지 없이 false를 반환합니다.

예제

// 사례 1
float x1[2][6] = { {559,434.5,651.5,0,180,0}, {559,434.5,251.5,0,180,0} };
float tvel[2] = {50, 50}; // 작업 공간 속도를 50(mm/sec, deg/sec)으로 설정합니다.
float tacc[2] = {100, 100}; // 작업 공간 가속도를 100(mm/sec2, deg/sec2)으로 설정합니다.
drfl.movec(x1, tvel, tacc);
// 원호 궤적을 따라 x1[0]을 지나 x1[1]로 속도 50, 가속도 100으로 이동합니다.

// 사례 2
float x1r[2][6] = { {559,434.5,651.5,0,180,0}, {559,434.5,251.5,0,180,0} };
float ttime = 5.f;
float zero[2] = {0.f, 0.f};
drfl.movec(x1r, zero, zero, ttime);
// 원호 궤적을 따라 x1r[0]을 지나 x1r[1]로 도달 시간 5초로 이동합니다.

// 사례 3
float x1b[2][6] = { {559,434.5,651.5,0,180,0}, {559,434.5,251.5,0,180,0} };
float x2b[2][6] = { {559,234.5,651.5,0,180,0}, {559,234.5,451.5,0,180,0} };
float tvelb[2] = {50, 50};
float taccb[2] = {100, 100};
float blending_radius = 50;
drfl.movec(x1b, tvelb, taccb, 0, MOVE_MODE_ABSOLUTE, MOVE_REFERENCE_BASE, 0, 0, blending_radius);
drfl.movec(x2b, tvelb, taccb, 0, MOVE_MODE_ABSOLUTE, MOVE_REFERENCE_BASE, 0, 0, 0, BLENDING_SPEED_TYPE_DUPLICATE);
// 원호 구간 두 개를 연속으로 실행합니다. 첫 번째는 블렌딩 반경 50 mm, 두 번째는 DUPLICATE 블렌딩을 사용합니다.

이 예제들은 경유점을 지나는 원호 모션, 시간 기준 원호 모션, 블렌딩으로 연결한 연속 원호를 보여 줍니다. fBlendingRadius와 eBlendingType으로 인접한 원호 구간을 부드럽게 연결하는 방식을 제어하세요.