movejx (자동 모드)

이 함수는 작업 공간(Task Space)에서 정의한 목표 TCP 위치(posx)로 로봇을 이동하되, 모션은 조인트 공간(Joint Space)에서 실행합니다. movel처럼 직교 좌표 목표를 받지만, 내부 궤적(Trajectory)은 직선 경로 계획이 아니라 조인트 보간으로 실행합니다.

목표 포즈에는 8가지 로봇 형상(관절 형상, Solution Space) 중 하나로 도달할 수 있으며, 사용자는 원하는 형상 번호(0–7)를 지정해야 합니다. 255를 전달하면 현재 조인트 자세에 가장 가까운 형상을 로봇이 자동으로 선택합니다(조인트 2–5축의 L2 노름이 가장 작은 형상).

movejx

정의(모든 축에 같은 속도/가속도)
DRFLEx.h, CDRFLEx 클래스의 public 섹션

bool movejx(float fTargetPos[NUM_JOINT],
            unsigned char iSolutionSpace,
            float fTargetVel,
            float fTargetAcc,
            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) {
    return _movejx(_rbtCtrl, fTargetPos, iSolutionSpace, fTargetVel, fTargetAcc,
                   fTargetTime, eMoveMode, eMoveReference, fBlendingRadius, eBlendingType);
};

매개변수

매개변수 이름

자료형

기본값

설명

fTargetPos

float[6]

목표 TCP 위치(X, Y, Z, Rx, Ry, Rz)

iSolutionSpace

unsigned char

조인트 형상 번호(0-7, 자동 선택은 255)

fTargetVel

float

모든 조인트에 똑같이 적용하는 속도 [deg/s]

fTargetAcc

float

모든 조인트에 똑같이 적용하는 가속도 [deg/s2]

fTargetTime

float

0.f

도달 시간 [sec] (지정하면 속도와 가속도보다 우선)

eMoveMode

MOVE_MODE

MOVE_MODE_ABSOLUTE

절대 또는 상대 모션 모드를 정합니다

eMoveReference

MOVE_REFERENCE

MOVE_REFERENCE_BASE

기준 좌표계(BASE 또는 TOOL)

fBlendingRadius

float

0.f

연속된 모션을 블렌딩할 반경 [mm]

eBlendingType

BLENDING_SPEED_TYPE

BLENDING_SPEED_TYPE_DUPLICATE

전환을 부드럽게 하기 위한 블렌딩 유형 옵션


정의(조인트별 속도/가속도)
DRFLEx.h, CDRFLEx 클래스의 public 섹션

bool movejx(float fTargetPos[NUM_JOINT],
            unsigned char iSolutionSpace,
            float fTargetVel[NUM_JOINT],
            float fTargetAcc[NUM_JOINT],
            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) {
    return _movejx_ex(_rbtCtrl, fTargetPos, iSolutionSpace, fTargetVel, fTargetAcc,
                      fTargetTime, eMoveMode, eMoveReference, fBlendingRadius, eBlendingType);
};

이 오버로드는 조인트 축마다 속도와 가속도 제한을 따로 지정할 수 있습니다. 내부적으로 _movejx 대신 _movejx_ex를 호출합니다.

매개변수

매개변수 이름

자료형

기본값

설명

fTargetPos

float[6]

목표 TCP 위치(X, Y, Z, Rx, Ry, Rz)

iSolutionSpace

unsigned char

조인트 형상 번호(0-7, 자동 선택은 255)

fTargetVel

float[6]

조인트 축별 속도 제한 [deg/s]

fTargetAcc

float[6]

조인트 축별 가속도 제한 [deg/s2]

fTargetTime

float

0.f

도달 시간 [sec] (지정하면 속도와 가속도보다 우선)

eMoveMode

MOVE_MODE

MOVE_MODE_ABSOLUTE

절대 또는 상대 모션 모드를 정합니다

eMoveReference

MOVE_REFERENCE

MOVE_REFERENCE_BASE

기준 좌표계(BASE 또는 TOOL)

fBlendingRadius

float

0.f

연속된 모션을 블렌딩할 반경 [mm]

eBlendingType

BLENDING_SPEED_TYPE

BLENDING_SPEED_TYPE_DUPLICATE

전환을 부드럽게 하기 위한 블렌딩 유형 옵션

참고

  • fTargetTime을 지정하면 fTargetVel과 fTargetAcc를 무시하고 지정한 시간에 맞춰 이동합니다.

  • 상대 모션(MOVE_MODE_RELATIVE) 뒤에 블렌딩을 사용하면 오류가 발생할 수 있습니다. 블렌딩은 절대 모드에서만 사용하세요.

  • fBlendingRadius와 fBlendingType에 따른 블렌딩 방식은 movej와 movel을 참고하세요.

로봇 형상(관절 형상)

관절 형상(Solution Space)

2진수

어깨

엘보

손목

0

000

왼쪽(Lefty)

아래(Below)

플립 없음(No Flip)

1

001

왼쪽(Lefty)

아래(Below)

플립(Flip)

2

010

왼쪽(Lefty)

위(Above)

플립 없음(No Flip)

3

011

왼쪽(Lefty)

위(Above)

플립(Flip)

4

100

오른쪽(Righty)

아래(Below)

플립 없음(No Flip)

5

101

오른쪽(Righty)

아래(Below)

플립(Flip)

6

110

오른쪽(Righty)

위(Above)

플립 없음(No Flip)

7

111

오른쪽(Righty)

위(Above)

플립(Flip)

255

자동

-

-

현재 자세에 가장 가까운 형상을 자동으로 선택합니다(조인트 2–5축의 L2 노름 최소화).

반환값

값

설명

0

오류

1

성공

참고

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

예제

// CASE 1 — 속도/가속도 기반 조인트 공간 이동
float x1[6] = {559, 34.5, 651.5, 0, 180, 0};
unsigned char sol = 2;
float jvel = 10;
float jacc = 20;

drfl.movejx(x1, sol, jvel, jacc);
// x1에 해당하는 목표 포즈로 이동합니다.
// 속도는 10 deg/s, 가속도는 20 deg/s²입니다.

// CASE 2 — 시간 기반 동작
float x2[6] = {559, 34.5, 651.5, 0, 180, 0};
drfl.movejx(x2, sol, 0.f, 0.f, 5.f);
// 5초 동안 목표 조인트 형상으로 이동합니다.

// CASE 3 — 이전 이동과 동작 블렌딩
float x3[6] = {559, 34.5, 651.5, 0, 180, 0};
float x4[6] = {559, 434.5, 651.5, 0, 180, 0};
float blend_radius = 50;

drfl.movejx(x3, sol, jvel, jacc, 0, MOVE_MODE_ABSOLUTE, MOVE_REFERENCE_BASE, blend_radius);
drfl.movejx(x4, sol, jvel, jacc, 0, MOVE_MODE_ABSOLUTE, MOVE_REFERENCE_BASE, 0, BLENDING_SPEED_TYPE_DUPLICATE);
// x3와 x4 사이에서 블렌딩한 조인트 공간 동작을 실행하며
// 반경 50 mm 이내에서 부드럽게 전환합니다.

이 함수는 주로 고속으로 부드럽게 조인트 공간을 전환할 때 사용합니다. 형상을 안정적으로 유지하면서 블렌딩을 유연하게 제어할 수 있습니다.