이전 버전(1.33.4)의 문서를 보고 있습니다. 이 버전은 계속 지원됩니다.
최신 버전 정보는 1.33.5에서 확인하세요.
최신 버전 정보는 1.33.5에서 확인하세요.
set_singularity_handling (자동 모드)
이 함수는 자동 모드에서 작업 공간(Task Space) 모션을 실행할 때 적용할 로봇의 특이점(Singularity) 처리 정책을 설정합니다.
특이점은 로봇의 자코비안 행렬 조건이 나빠지는 지점입니다. 특이점 근처에서는 모션이 불안정해지거나 경로 추종 정확도가 떨어질 수 있습니다.
이 함수는 직접 모션을 만들지 않습니다. movel()이나 movec() 같은 작업 공간 모션 중에 특이 자세를 만났을 때 컨트롤러가 어떻게 대응할지 정합니다.
기본적으로 특이점 영역 근처의 불안정을 줄이기 위해 자동 회피 모드가 적용됩니다.
사용 가능한 모드
SINGULARITY_AVOIDANCE_AVOID: 자동 회피(기본값).
SINGULARITY_AVOIDANCE_STOP: 경로 우선 정지 모드.
SINGULARITY_AVOIDANCE_VEL: 가변 속도 모드.
정의
DRFLEx.h, CDRFLEx 클래스의 public 섹션
bool set_singularity_handling(SINGULARITY_AVOIDANCE eMode) {
return _set_singularity_handling(_rbtCtrl, eMode);
};
매개변수
매개변수 이름 |
자료형 |
기본값 |
설명 |
|---|---|---|---|
eMode |
열거형 정의를 참고하세요 |
반환값
값 |
설명 |
|---|---|
0 |
특이점 처리 모드를 변경하지 못했습니다. |
1 |
새 특이점 처리 정책을 적용했습니다. |
예제
float p1[6] = {400.0f, 500.0f, 600.0f, 0.0f, 180.0f, 0.0f};
float p2[6] = {400.0f, 500.0f, 200.0f, 0.0f, 180.0f, 0.0f};
float vel1[2] = {50.0f, 50.0f}, acc1[2] = {50.0f, 50.0f};
float vel2[2] = {30.0f, 30.0f}, acc2[2] = {30.0f, 30.0f};
float vel3[2] = {40.0f, 40.0f}, acc3[2] = {40.0f, 40.0f};
// Case 1: 기본 자동 회피 모드
drfl.set_singularity_handling(SINGULARITY_AVOIDANCE_AVOID);
drfl.movel(p1, vel1, acc1);
// Case 2: 특이점 근처에서 안전을 위한 경로 우선 정지 모드
drfl.set_singularity_handling(SINGULARITY_AVOIDANCE_STOP);
drfl.movel(p2, vel2, acc2);
// Case 3: 특이점 주변에서 부드럽게 동작하는 가변 속도 모드
drfl.set_singularity_handling(SINGULARITY_AVOIDANCE_VEL);
drfl.movel(p1, vel3, acc3);
이 예제는 작업 공간 모션 중 안정성과 경로 정확도의 균형을 맞추도록 특이점 처리 방식을 설정하는 방법을 보여 줍니다. 특이점 영역 근처에서 운용할 때는 모션 우선순위와 애플리케이션의 안전 요구 사항에 따라 적절한 모드를 선택하세요.