amovejx (자동 모드)
이 함수는 관절 형상(Solution Space) 번호를 추가로 지정해 조인트 공간(Joint Space) 모션을 실행합니다. 같은 직교 좌표 목표에 서로 다른 역기구학 해로 도달할 수 있습니다. 같은 TCP 위치에 대해 유효한 조인트 형상이 여러 개인 로봇에 특히 유용합니다.
정의(모든 축에 같은 속도/가속도)
DRFLEx.h, CDRFLEx 클래스의 public 섹션
bool amovejx(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,
BLENDING_SPEED_TYPE eBlendingType = BLENDING_SPEED_TYPE_DUPLICATE) {
return _amovejx(_rbtCtrl, fTargetPos, iSolutionSpace, fTargetVel,
fTargetAcc, fTargetTime, eMoveMode, eMoveReference, eBlendingType);
};
매개변수
매개변수 이름 |
자료형 |
기본값 |
설명 |
|---|---|---|---|
fTargetPos |
float[6] |
로봇의 6개 축 각각의 목표 조인트 위치입니다. |
|
iSolutionSpace |
unsigned char |
역기구학(Inverse Kinematics)의 관절 형상 번호를 지정합니다. |
|
fTargetVel |
float |
모든 축에 똑같이 적용하는 조인트 속도 [deg/s]입니다. |
|
fTargetAcc |
float |
모든 축에 똑같이 적용하는 조인트 가속도 [deg/s2]입니다. |
|
fTargetTime |
float |
0.f |
모션 완료 시간 [sec]입니다. 지정하면 속도와 가속도는 무시됩니다. |
eMoveMode |
|
절대 모드로 이동할지 상대 모드로 이동할지 지정합니다. |
|
eMoveReference |
|
모션의 기준 좌표계(BASE 또는 TOOL)입니다. |
|
eBlendingType |
|
다음 모션과의 블렌딩 방식을 결정합니다. |
정의(조인트별 속도/가속도)
DRFLEx.h, CDRFLEx 클래스의 public 섹션
bool amovejx(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,
BLENDING_SPEED_TYPE eBlendingType = BLENDING_SPEED_TYPE_DUPLICATE) {
return _amovejx_ex(_rbtCtrl, fTargetPos, iSolutionSpace, fTargetVel,
fTargetAcc, fTargetTime, eMoveMode, eMoveReference, eBlendingType);
};
이 오버로드는 조인트 축마다 속도와 가속도 제한을 따로 지정할 수 있습니다. 내부적으로 _amovejx 대신 _amovejx_ex를 호출합니다.
매개변수
매개변수 이름 |
자료형 |
기본값 |
설명 |
|---|---|---|---|
fTargetPos |
float[6] |
로봇의 6개 축 각각의 목표 조인트 위치입니다. |
|
iSolutionSpace |
unsigned char |
역기구학(Inverse Kinematics)의 관절 형상 번호를 지정합니다. |
|
fTargetVel |
float[6] |
조인트 축별 속도 제한 [deg/s]입니다. |
|
fTargetAcc |
float[6] |
조인트 축별 가속도 제한 [deg/s2]입니다. |
|
fTargetTime |
float |
0.f |
모션 완료 시간 [sec]입니다. 지정하면 속도와 가속도는 무시됩니다. |
eMoveMode |
|
절대 모드로 이동할지 상대 모드로 이동할지 지정합니다. |
|
eMoveReference |
|
모션의 기준 좌표계(BASE 또는 TOOL)입니다. |
|
eBlendingType |
|
다음 모션과의 블렌딩 방식을 결정합니다. |
참고
iSolutionSpace매개변수는 같은 직교 좌표 포즈에 도달하는 여러 유효한 조인트 공간 해 가운데 특정 기구학 형상을 지정합니다. 이 값으로 로봇 팔의 자세(예: 엘보 업/엘보 다운)를 제어할 수 있습니다.fTargetTime을 지정하면fTargetVel과fTargetAcc는 무시됩니다.블렌딩(
eBlendingType)을 사용하면 연속된amovejx나movej모션을 부드럽게 연결할 수 있습니다.
반환값
값 |
설명 |
|---|---|
0 |
오류 |
1 |
성공 |
참고
로봇이 STATE_EMERGENCY_STOP, STATE_SAFE_OFF, STATE_SAFE_OFF2, STATE_SAFE_STOP, STATE_SAFE_STOP2 상태이면 메시지 없이 false를 반환합니다.
예제
// CASE 1 — 특정 관절 형상(solution space)으로 이동(예: elbow-up)
float q1[6] = { 0, -30, 60, 0, 90, 0 };
unsigned char sol_space = 1; // 관절 형상 인덱스 선택
float jVel = 30; // 조인트 속도[deg/sec]
float jAcc = 60; // 조인트 가속도[deg/sec²]
drfl.amovejx(q1, sol_space, jVel, jAcc);
// 관절 형상 1을 사용해 목표 조인트 위치로 이동합니다.
// CASE 2 — 같은 목표를 다른 형상으로 이동하는 시간 기반 동작
float q2[6] = { 0, -60, 120, 0, 90, 0 };
unsigned char sol_alt = 2; // 다른 기구학 형상
float move_time = 5.0f;
drfl.amovejx(q2, sol_alt, 0.f, 0.f, move_time);
// 관절 형상 2로 5초 동안 목표로 이동합니다.
// CASE 3 — 두 형상 사이의 블렌딩 전환
float q3[6] = { 0, -45, 90, 0, 90, 0 };
drfl.amovejx(q1, sol_space, jVel, jAcc, 0, MOVE_MODE_ABSOLUTE, MOVE_REFERENCE_BASE, BLENDING_SPEED_TYPE_DUPLICATE);
drfl.amovejx(q3, sol_alt, jVel, jAcc);
// 블렌딩으로 두 동작 경로 사이를 부드럽게 전환합니다.
이 예제는 여러 해를 활용한 조인트 모션 제어를 보여 줍니다. 자동 모드에서 자세를 바꾸거나 기구학 형상 사이를 부드럽게 전환할 수 있습니다.