최신 버전 정보는 1.33.5에서 확인하세요.
movejx (자동 모드)
이 함수는 작업 공간(Task Space)에서 정의한 목표 TCP 위치(posx)로 로봇을 이동하되, 모션은 조인트 공간(Joint Space)에서 실행합니다. movel처럼 직교 좌표 목표를 받지만, 내부 궤적(Trajectory)은 직선 경로 계획이 아니라 조인트 보간으로 실행합니다.
목표 포즈에는 8가지 로봇 형상(관절 형상, Solution Space) 중 하나로 도달할 수 있으며, 사용자는 원하는 형상 번호(0–7)를 지정해야 합니다. 255를 전달하면 현재 조인트 자세에 가장 가까운 형상을 로봇이 자동으로 선택합니다(조인트 2–5축의 L2 노름이 가장 작은 형상).
정의(모든 축에 같은 속도/가속도)
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 |
|
절대 또는 상대 모션 모드를 정합니다 |
|
eMoveReference |
|
기준 좌표계(BASE 또는 TOOL) |
|
fBlendingRadius |
float |
0.f |
연속된 모션을 블렌딩할 반경 [mm] |
eBlendingType |
|
전환을 부드럽게 하기 위한 블렌딩 유형 옵션 |
정의(조인트별 속도/가속도)
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 |
|
절대 또는 상대 모션 모드를 정합니다 |
|
eMoveReference |
|
기준 좌표계(BASE 또는 TOOL) |
|
fBlendingRadius |
float |
0.f |
연속된 모션을 블렌딩할 반경 [mm] |
eBlendingType |
|
전환을 부드럽게 하기 위한 블렌딩 유형 옵션 |
참고
로봇 형상(관절 형상)
관절 형상(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 이내에서 부드럽게 전환합니다.
이 함수는 주로 고속으로 부드럽게 조인트 공간을 전환할 때 사용합니다. 형상을 안정적으로 유지하면서 블렌딩을 유연하게 제어할 수 있습니다.