이전 버전(1.33.4)의 문서를 보고 있습니다. 이 버전은 계속 지원됩니다.
최신 버전 정보는 1.33.5에서 확인하세요.

set_singular_handling_force (자동 모드)

이 함수는 자동 모드 운전 중 힘 제어와 순응 제어(Compliance Control)에 대한 로봇의 특이점(Singularity) 처리 정책을 설정합니다.

특이점이 감지되면 자코비안 행렬의 조건이 나빠져 힘 제어나 순응 제어가 불안정해질 수 있습니다. 이 함수는 이런 상황에서 힘 기반 명령을 오류로 거부할지 계속 진행하도록 허용할지 정합니다.

기본적으로 특이점 영역에서는 안전하고 보수적인 운용을 위해 힘 제어와 순응 제어를 거부합니다.

사용 가능한 모드

  • SINGULARITY_ERROR: 특이점 영역에서 힘 제어나 순응 제어를 실행하면 오류를 발생시킵니다(기본값).

  • SINGULARITY_IGNORE: 특이점 관련 제한을 무시하고 힘 제어나 순응 제어를 계속 진행합니다.

정의
DRFLEx.h, CDRFLEx 클래스의 public 섹션

bool set_singular_handling_force(SINGULARITY_FORCE_HANDLING eMode) {
    return _set_singular_handling_force(_rbtCtrl, eMode);
};

매개변수

매개변수 이름

자료형

기본값

설명

eMode

SINGULARITY_FORCE_HANDLING

SINGULARITY_ERROR

힘 제어와 순응 제어에 대한 특이점 처리 정책을 설정합니다.

반환값

값

설명

0

힘 제어(Force Control)에 대한 특이점 처리 정책을 변경하지 못했습니다.

1

힘 제어에 대한 새 특이점 처리 정책을 적용했습니다.

예제

// 특이점에 가까운 조인트 포즈로 이동(예제)
float q_sing[6] = { 0.0f, -40.0f, 80.0f, 0.0f, 40.0f, 0.0f };
drfl.movej(q_sing, 10.0f, 10.0f);

// 작업 공간 순응 제어 활성화
float stiffness[6] = { 100.f, 100.f, 100.f, 20.f, 20.f, 20.f };
drfl.task_compliance_ctrl(stiffness);

// 목표 힘(예: Z- 방향)
float fd[6]   = { 0.f, 0.f, -10.0f, 0.f, 0.f, 0.f };
unsigned char fdir[6] = { 0, 0, 1, 0, 0, 0 };

// 사례 1
drfl.set_singular_handling_force(SINGULARITY_ERROR);
drfl.set_desired_force(fd, fdir);
// 특이점 영역에서는 힘 제어가 거부됩니다

// 사례 2
drfl.set_singular_handling_force(SINGULARITY_IGNORE);
drfl.set_desired_force(fd, fdir);
// 특이점 영역 근처에서 힘 제어를 허용합니다(주의해서 사용하세요)

drfl.release_compliance_ctrl();

이 예제는 자동 모드에서 힘 제어와 순응 제어의 특이점 처리 방식을 설정하는 방법을 보여 줍니다. 특이점 영역 근처에서 힘 제어를 허용하면 작업 유연성이 높아질 수 있지만, 불안정해지거나 힘 추정이 부정확해질 수 있으므로 주의해서 사용해야 합니다.