movej (자동 모드)
이 함수는 로봇을 현재 조인트 위치에서 목표 조인트 위치로 이동합니다.
정의(모든 축에 같은 속도/가속도)
DRFLEx.h, CDRFLEx 클래스의 public 섹션
// 모션 제어: 조인트 이동
bool movej(float fTargetPos[NUM_JOINT],
float fTargetVel,
float fTargetAcc,
float fTargetTime = 0.f,
MOVE_MODE eMoveMode = MOVE_MODE_ABSOLUTE,
float fBlendingRadius = 0.f,
BLENDING_SPEED_TYPE eBlendingType = BLENDING_SPEED_TYPE_DUPLICATE) {
return _movej(_rbtCtrl, fTargetPos, fTargetVel, fTargetAcc,
fTargetTime, eMoveMode, fBlendingRadius, eBlendingType);
};
매개변수
매개변수 이름 |
자료형 |
기본값 |
설명 |
|---|---|---|---|
fTargetPos |
float[6] |
6개 축의 목표 조인트 위치 |
|
fTargetVel |
float |
모든 조인트에 똑같이 적용하는 속도 [deg/s] |
|
fTargetAcc |
float |
모든 조인트에 똑같이 적용하는 가속도 [deg/s2] |
|
fTargetTime |
float |
|
도달 시간 [sec] |
eMoveMode |
|
열거형 정의를 참고하세요 |
|
fBlendingRadius |
float |
|
블렌딩 반경 [mm] |
eBlendingType |
|
열거형 정의를 참고하세요 |
정의(조인트별 속도/가속도)
DRFLEx.h, CDRFLEx 클래스의 public 섹션
bool movej(float fTargetPos[NUM_JOINT],
float fTargetVel[NUM_JOINT],
float fTargetAcc[NUM_JOINT],
float fTargetTime = 0.f,
MOVE_MODE eMoveMode = MOVE_MODE_ABSOLUTE,
float fBlendingRadius = 0.f,
BLENDING_SPEED_TYPE eBlendingType = BLENDING_SPEED_TYPE_DUPLICATE) {
return _movej_ex(_rbtCtrl, fTargetPos, fTargetVel, fTargetAcc,
fTargetTime, eMoveMode, fBlendingRadius, eBlendingType);
};
이 오버로드는 조인트 축마다 속도와 가속도 제한을 따로 지정할 수 있습니다. 내부적으로 _movej 대신 _movej_ex를 호출합니다.
매개변수
매개변수 이름 |
자료형 |
기본값 |
설명 |
|---|---|---|---|
fTargetPos |
float[6] |
6개 축의 목표 조인트 위치 |
|
fTargetVel |
float[6] |
조인트 축별 속도 제한 [deg/s] |
|
fTargetAcc |
float[6] |
조인트 축별 가속도 제한 [deg/s2] |
|
fTargetTime |
float |
|
도달 시간 [sec] |
eMoveMode |
|
열거형 정의를 참고하세요 |
|
fBlendingRadius |
float |
|
블렌딩 반경 [mm] |
eBlendingType |
|
열거형 정의를 참고하세요 |
주의
다음 모션을 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 q0[6] = { 0, 0, 90, 0, 90, 0 };
float jVel = 10;
float jAcc = 20;
drfl.movej(q0, jVel, jAcc);
// 속도 10(deg/sec), 가속도 20(deg/sec2)으로 q0 조인트 각도로 이동합니다.
// 사례 2
float q0r[6] = { 0, 0, 90, 0, 90, 0 };
float jTime = 5;
drfl.movej(q0r, 0.f, 0.f, jTime);
// 도달 시간 5초로 q0 조인트 각도로 이동합니다.
// 사례 3
float q0b[6] = { 0, 0, 90, 0, 90, 0 };
float q1b[6] = { 90, 0, 90, 0, 90, 0 };
float jVelb = 10;
float jAccb = 20;
float blending_radius = 50;
drfl.movej(q0b, jVelb, jAccb, 0, MOVE_MODE_ABSOLUTE, blending_radius);
// q0 조인트 각도로 이동하며, q0 조인트 각도에 해당하는 위치로부터의
// 거리가 50 mm가 되면 다음 동작을 실행하도록 설정합니다.
drfl.movej(q1b, jVelb, jAccb, 0, MOVE_MODE_ABSOLUTE, 0, BLENDING_SPEED_TYPE_DUPLICATE);
// 이전 동작과 블렌딩하여 q1 조인트 각도로 이동합니다.
이 예제는 시간 기준 조인트 모션과 속도/가속도 기준 조인트 모션, 그리고 블렌딩 반경과 DUPLICATE 블렌딩으로 두 구간을 부드럽게 연결하는 시퀀스를 보여 줍니다.