이전 버전(1.33.4)의 문서를 보고 있습니다. 이 버전은 계속 지원됩니다.
최신 버전 정보는 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

PATH_MODE

경로 보간 모드입니다.

eTargetRef

COORDINATE_SYSTEM

경로 수정 명령을 적용할 좌표계입니다.
일반적인 값: COORDINATE_SYSTEM_BASE, COORDINATE_SYSTEM_TOOL

fLimitDpos

float[2]

최대 이동 한계입니다.
[0]: 직선 변위 한계(mm)
[1]: 자세 변화 한계(deg)
두 요소가 모두 -10000이면 누적 수정량을 제한하지 않습니다.

fLimitDposPer

float[2]

주기당 수정량 한계입니다.
[0]: 주기당 직선 변위 한계(mm)
[1]: 주기당 자세 변화 한계(deg)
두 요소가 모두 -10000이면 주기당 수정량을 제한하지 않습니다.

반환값

값

설명

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()을 성공적으로 호출한 후에만 사용할 수 있으며, 설정한 변위와 자세 한계 안에서 실행해야 합니다.