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

movel (자동 모드)

이 함수는 작업 공간(Task Space)에서 목표 위치(pos)까지 직선을 따라 로봇을 이동합니다.

movel

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

// 모션 제어: 직선 이동
bool movel(float fTargetPos[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 fBlendingRadius = 0.f,
           BLENDING_SPEED_TYPE eBlendingType = BLENDING_SPEED_TYPE_DUPLICATE,
           DR_MV_APP eAppType = DR_MV_APP_NONE) {
    return _movel(_rbtCtrl, fTargetPos, fTargetVel, fTargetAcc, fTargetTime,
                  eMoveMode, eMoveReference, fBlendingRadius, eBlendingType, eAppType);
};

매개변수

매개변수 이름

자료형

기본값

설명

fTargetPos

float[6]

6개 축의 목표 TCP 위치 [mm, deg]

fTargetVel

float[2]

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

fTargetAcc

float[2]

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

fTargetTime

float

0.f

도달 시간 [sec]
* 시간을 지정하면 vel과 acc를 무시하고 시간을 기준으로 처리합니다.

eMoveMode

MOVE_MODE

MOVE_MODE_ABSOLUTE

열거형 정의를 참고하세요

eMoveReference

MOVE_REFERENCE

MOVE_REFERENCE_BASE

열거형 정의를 참고하세요

fBlendingRadius

float

0.f

블렌딩 반경 [mm]

eBlendingType

BLENDING_SPEED_TYPE

BLENDING_SPEED_TYPE_DUPLICATE

열거형 정의를 참고하세요

eAppType

DR_MV_APP

DR_MV_APP_NONE

열거형 정의를 참고하세요. 값을 받기는 하지만 컨트롤러로 보내지 않습니다.

참고

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

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

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

    movel_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[6]  = { 559, 434.5, 651.5, 0, 180, 0 };
float tvel[2] = { 50, 50 };
float tacc[2] = { 100, 100 };
drfl.movel(x1, tvel, tacc);
// 속도 50(mm/sec), 가속도 100(mm/sec2)으로 x1 위치로 이동합니다.

// 사례 2
float x1r[6] = { 559, 434.5, 651.5, 0, 180, 0 };
float tTime  = 5;
float zero[2] = {0.f, 0.f};
drfl.movel(x1r, zero, zero, tTime);
// 도달 시간 5초로 x1 위치로 이동합니다.

// 사례 3
float x1t[6] = { 559, 434.5, 651.5, 0, 180, 0 };
float tvel2[2] = { 50, 50 };
float tacc2[2] = { 100, 100 };
drfl.movel(x1t, tvel2, tacc2, 0, MOVE_MODE_RELATIVE, MOVE_REFERENCE_TOOL);
// 시작 위치에서 툴 좌표계 기준 x1t 상대 위치로 로봇을 이동합니다.

float x1b[6] = { 559, 434.5, 651.5, 0, 180, 0 };
float x2b[6] = { 559, 434.5, 251.5, 0, 180, 0 };
float tvelb[2] = { 50, 50 };
float taccb[2] = { 100, 100 };
float blending_radius = 100;
drfl.movel(x1b, tvelb, taccb, 0, MOVE_MODE_ABSOLUTE, MOVE_REFERENCE_BASE, blending_radius);

이 예제는 속도/가속도를 사용한 직선 TCP 모션, 시간 기준 실행, 툴 좌표계 기준 상대 이동, 그리고 100 mm 반경으로 다음 경로와 부드럽게 연결하는 블렌딩 직선 구간을 보여 줍니다.