최신 버전 정보는 1.33.5에서 확인하세요.
movesj_g (자동 모드)
이 함수는 여러 경유점(Waypoint)을 지나는 조인트 공간(Joint Space) 스플라인 모션을 실행하며, 스플라인 보간으로 부드럽고 연속적인 궤적을 만듭니다. 각 경유점은 다음 경유점과 자동으로 블렌딩되어 끊김 없이 이동합니다.
이 API는 자동(실행) 모드에서만 동작합니다. 수동(교시) 모드에서는 사용할 수 없습니다.
정의
DRFLEx.h, CDRFLEx 클래스의 public 섹션
bool movesj_g(float fTargetPos[MAX_SPLINE_POINT][NUM_JOINT],
unsigned char nPosCount,
float fTargetVel,
float fTargetAcc,
float fTargetTime = 0.f,
MOVE_MODE eMoveMode = MOVE_MODE_ABSOLUTE)
{
return _movesj_g(_rbtCtrl, fTargetPos, nPosCount, fTargetVel, fTargetAcc, fTargetTime, eMoveMode);
}
매개변수
매개변수 이름 |
자료형 |
기본값 |
설명 |
|---|---|---|---|
fTargetPos |
float[MAX_SPLINE_POINT][6] |
BASE 좌표계 기준 경유점 포즈 목록 [X, Y, Z는 mm, Rx, Ry, Rz는 고정 X-Y-Z 각도(deg)]입니다. 이 함수는 각 경유점의 조인트 위치를 역기구학(Inverse Kinematics)으로 계산해 배열에 다시 씁니다. |
|
nPosCount |
unsigned char |
유효한 경유점 수(최대 = MAX_SPLINE_POINT)입니다. |
|
fTargetVel |
float |
스플라인 모션의 목표 속도입니다. |
|
fTargetAcc |
float |
스플라인 모션의 목표 가속도입니다. |
|
fTargetTime |
float |
0.0f |
모션 시간 [sec]입니다. |
eMoveMode |
|
절대 이동인지 상대 이동인지 정합니다. |
주의
이 함수는 fTargetPos의 처음 nPosCount개 경유점마다 6개 요소를 모두 역기구학으로 구한 조인트 위치[deg]로 덮어씁니다. 호출할 때마다 경유점을 새로 복사해 전달하세요. 같은 배열을 다시 사용하면 다음 호출에서 조인트 값을 포즈로 보내게 됩니다.
각 조인트 위치는 BASE 좌표계 기준 경유점에 대한 관절 형상(Solution Space) 2번(Lefty, Above, No Flip, movejx 참조)의 역기구학 해입니다. 이 함수는 경유점마다 컨트롤러에서 이 결과를 받을 때까지 기다리고, 결과를 CDRFLEx 객체가 get_current_posx, get_desired_posx, fkin, ikin, ikin_norm, trans, coord_transform, calc_coord, get_user_home, get_user_cart_coord, flange_serial_read와 공유하는 데이터에 저장합니다. 따라서 이 함수들이 앞서 반환한 포인터는 movesj_g가 반환한 후 덮어쓴 데이터를 가리킵니다. 먼저 구조체를 복사해 두세요. 콜백 안에서 movesj_g를 호출하지 마세요. 콜백 함수 규칙을 참고하세요.
반환값
값 |
설명 |
|---|---|
0 |
실패 |
1 |
성공 |
예제
// BASE 기준 경유점 포즈[X, Y, Z 단위 mm; Rx, Ry, Rz 단위 deg]
const float waypoints[3][6] = {
{400.f, 200.f, 300.f, 180.f, 0.f, 180.f},
{450.f, 150.f, 300.f, 180.f, 0.f, 180.f},
{500.f, 100.f, 300.f, 180.f, 0.f, 180.f}
};
// movesj_g는 첫 번째 인수를 덮어쓰므로 호출할 때마다 새 복사본을 전달하세요
float path[3][6];
for (int i = 0; i < 3; ++i)
for (int j = 0; j < 6; ++j)
path[i][j] = waypoints[i][j];
drfl.movesj_g(path, 3, 50.f, 100.f, 2.0f);
참고
movesj_g는 스플라인 블렌딩으로 부드러운 다중 지점 조인트 보간을 제공합니다.속도와 가속도 제한에 맞춰 블렌딩을 자동으로 조정합니다.
경로 교시, 모션 스트리밍, 다중 지점 시퀀스 실행에 적합합니다.
force/stiffness control이나change_operation_speed()와 연동되지 않습니다.오버플로를 막으려면
nPosCount≤ MAX_SPLINE_POINT를 지키세요.