최신 버전 정보는 1.33.5에서 확인하세요.
enable_alter_motion
enable_alter_motion()과 alter_motion 함수로 모션 궤적(Trajectory)을 수정할 수 있습니다.
이 함수는 경로 수정(Alter Motion) 기능의 설정을 지정하고, alter_motion()의 입력량을 모션 궤적에 반영할 수 있게 합니다. 경로 수정 모션은 iCycleTime x 10 ms 단위 구간으로 생성됩니다. iCycleTime은 1~254여야 합니다. 아래의 주의 사항을 참고하세요. 이 함수는 누적 모드와 증분 모드의 2가지 모드를 지원합니다. alter_motion()의 입력량은 누적값 또는 증분값의 두 가지 방식으로 모션 궤적에 반영할 수 있습니다. 누적 모드에서 입력량은 현재 모션 궤적에 대한 절대 수정량(dX,dY,dZ,dRX,dRY,dRZ)입니다.
반면 증분 모드에서 입력량은 직전 절대 수정량에 더하는 증분입니다. 기준 좌표계는 입력 매개변수 ref로 바꿀 수 있습니다. 누적량과 증분량의 한계는 입력 매개변수 fLimitDpos(누적 한계)와 fLimitDposPer(1주기 동안의 증분 입력 한계)로 설정할 수 있습니다. 실제 수정량은 이 한계 안으로 제한됩니다.
이 함수는 M2.4 버전 이상에서만 사용할 수 있습니다.
정의
DRFLEx.h, CDRFLEx 클래스의 public 섹션
bool enable_alter_motion(int iCycleTime,
PATH_MODE ePathMode,
COORDINATE_SYSTEM eTargetRef,
float fLimitDpos[2],
float fLimitDposPer[2]) {
return _enable_alter_motion(_rbtCtrl, iCycleTime, ePathMode, eTargetRef, fLimitDpos, fLimitDposPer);
};
매개변수
매개변수 이름 |
자료형 |
기본값 |
설명 |
|---|---|---|---|
iCycleTime |
int |
경로 수정 모션은 iCycleTime x 10 ms 단위 구간으로 생성됩니다. 유효 범위는 1~254입니다. 컨트롤러는 0과 255를 경로 수정 입력 오류로 거부합니다. |
|
ePathMode |
경로 보간 모드입니다. |
||
eTargetRef |
경로 수정 명령을 적용할 좌표계입니다. |
||
fLimitDpos |
float[2] |
최대 이동 한계입니다. |
|
fLimitDposPer |
float[2] |
주기당 수정량 한계입니다. |
반환값
값 |
설명 |
|---|---|
0 |
오류 |
1 |
성공 |
주의
iCycleTime 값이 255보다 크면 256으로 나눈 나머지가 적용됩니다. 예를 들어 257은 1(10 ms)로 적용됩니다. 나머지가 0이나 255인 값은 경고와 함께 거부됩니다. 1~254 사이의 값만 전달하세요.
예제
// 1) 경로 수정 모드 활성화(20 x 10 ms = 200 ms 주기)
float limitDpos[2] = {5.0f, 3.0f}; // 최대 선형/자세 변위
float limitDposPer[2] = {0.5f, 0.3f}; // 주기당 보정량 제한
drfl.enable_alter_motion(20, PATH_MODE_DPOS, COORDINATE_SYSTEM_TOOL,
limitDpos, limitDposPer);
// 2) 모션이 실행되는 동안 작은 보정량 적용
for (int i = 0; i < 50; ++i) {
float delta[6] = {0.1f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f};
drfl.alter_motion(delta);
std::this_thread::sleep_for(std::chrono::milliseconds(200));
}
// 3) 미세 조정 후 경로 수정 모드 비활성화
drfl.disable_alter_motion();
이 예제는 경로 수정을 활성화하고, 제어 주기마다 작은 위치 보정을 적용한 다음, 미세 조정이 끝나면 안전하게 비활성화하는 방법을 보여 줍니다. alter_motion()은 enable_alter_motion()을 성공적으로 호출한 후에만 사용할 수 있으며, 설정한 변위와 자세 한계 안에서 실행해야 합니다.