본문 바로가기
로봇공학/로봇공학기초 - 2DOF Sim

[2DOF Simulation] #5. 특이점 시각화 (Singularity Tool)

by TBI 2026. 5. 31.

🛠 자유도가 사라지는 순간

지난 글에서 자코비안의 속도 타원을 살펴봤습니다. 타원이 길쭉해지거나 동그래지면서, 어느 방향으로 잘 움직이는지를 한눈에 보여줬죠.

그런데 그 타원이 갑자기 직선으로 납작해지는 순간이 있었습니다.

"두 관절이 멀쩡히 돌아가는데, 끝점은 한 방향으로밖에 못 움직이는 자세."

이게 바로 특이점(Singularity) 입니다. 이론 시리즈 #5에서 다룬 그 자세를, 이번에는 직접 슬라이더로 진입해보면서 어떤 일이 벌어지는지 체감해봅니다.

 

🧭 왜 시각화가 필요한가

2-DOF 평면 로봇팔의 특이점 조건은 단순합니다.

$$\det(\mathbf{J}) = L_1 L_2 \sin\theta_2 = 0$$

즉 $\sin\theta_2 = 0$ 일 때, 그러니까 $\theta_2 = 0°$ 또는 $\theta_2 = \pm 180°$ 일 때 특이점이 발생합니다.

  • $\theta_2 = 0°$ → 팔이 일자로 펴진 자세 (작업공간 바깥 경계)
  • $\theta_2 = \pm 180°$ → 팔이 완전히 접힌 자세 (작업공간 안쪽 경계)

식은 명확합니다. 그런데 식만 봐서는 답하기 어려운 질문들이 있어요.

  • 특이점에서 끝점은 어떤 방향으로 못 움직이는가?
  • 특이점 근처에서는 어떤 일이 벌어지는가?
  • IK는 왜 특이점 근처에서 폭주한다고 하는가?

이런 건 슬라이더로 직접 특이점에 들어갔다 나왔다 해보고, 그 순간 화살표와 타원이 어떻게 변하는지 봐야 감이 옵니다.

 

🎮 직접 진입해보는 특이점

아래 도구는 특이점에 가까워질수록 타원이 납작해지고, det(J)가 0에 가까워지고, 끝점이 못 가는 방향이 빨간 선으로 표시됩니다. 두 가지 특이점 자세 버튼으로 즉시 진입해보세요.

관절각 θ₁
30°
관절각 θ₂ (특이점 = 0°, ±180°)
60°
det(J)
조건수 (κ)
막힌 방향
상태
정상

 

🔍 도구 사용법

이 도구는 두 개의 슬라이더와 네 개의 버튼으로 조작합니다.

  • θ₁, θ₂ 슬라이더 — 로봇팔 자세. 특히 θ₂ 를 0° 또는 ±180° 근처로 가져가보세요
  • ⚠️ 일자 (θ₂ = 0°) — 팔이 일자로 펴진 특이점으로 점프 (작업공간 바깥 경계)
  • ⚠️ 접힘 (θ₂ = 180°) — 팔이 완전히 접힌 특이점으로 점프 (작업공간 안쪽 경계)
  • 근처 (θ₂ = 5°) — 특이점 바로 근처로 점프 (행동이 어떻게 망가지는지 보기)

그림에서 각 요소의 의미는 이렇습니다.

  • 속도 타원 — 자코비안의 속도 타원 (#4와 동일)
  • 색 변화 — 정상은 파랑, 특이점 근처는 주황, 특이점은 빨강
  • 빨간 점선 + ✕ 표시"끝점이 절대 못 가는 방향". 두 관절을 어떻게 돌려도 이 방향으론 못 움직임

아래 카드에는 자코비안 행렬식, 조건수(κ), 막힌 방향, 현재 상태가 실시간으로 표시됩니다.

 

🧪 이런 실험을 해보세요

특이점은 글로 설명되는 것보다 직접 진입해봐야 와닿습니다.

실험 1 — θ₂ 슬라이더로 특이점에 천천히 접근

θ₂ = 60° 에서 시작해서 슬라이더를 천천히 0°로 내려보세요. 타원이 점점 길쭉해지다가 거의 직선이 됩니다. 그리고 det(J) 값이 점점 0에 가까워지고, 어느 순간 빨갛게 변해요. 이게 *"특이점에 접근한다"* 의 시각적 정의입니다.

실험 2 — 일자 자세 (θ₂ = 0°) 의미 곱씹기

"⚠️ 일자" 버튼을 누르면 끝점이 작업공간 바깥쪽 경계에 위치합니다. 빨간 점선이 표시되는 방향 — 그 방향이 바로 *"끝점에서 어깨를 향하는 반지름 방향의 수직 방향"* 이에요. 잠깐, 반대 아닌가요? 직접 보세요. 사실 막히는 방향은 팔의 길이 방향(반지름 방향) 입니다. 팔이 이미 최대로 펴져있으니, 더 멀어지는 쪽으로는 갈 수 없거든요.

실험 3 — 접힘 자세 (θ₂ = 180°) 의 의미

"⚠️ 접힘" 버튼을 누르면 팔이 완전히 접혀서 끝점이 작업공간 안쪽 경계에 위치합니다. 마찬가지로 막히는 방향은 반지름 방향. 이미 최대로 접혀있으니 더 가까워지는 쪽으로는 못 가요. 즉 두 특이점은 모두 *"한계선 위에 있어서 그 너머로 못 가는 자세"* 입니다.

실험 4 — 조건수 κ 관찰하기

θ₂ 를 60° → 30° → 10° → 5° → 1° 로 내려보세요. 조건수가 폭발합니다. 정상 자세에서는 1~3 정도지만, 특이점 근처에서는 100, 1000, ∞ 로 치솟아요. 조건수는 *"끝점속도를 만들기 위한 관절속도가 얼마나 폭주하는가"* 의 척도입니다. 이게 IK가 특이점 근처에서 폭주하는 이유에요.

실험 5 — "근처" 버튼 누르고 자세 흔들기

θ₂ = 5° 자세에서 θ₁ 슬라이더만 살짝 움직여보세요. 팔이 거의 일자로 펴진 채 회전합니다. 끝점이 그리는 궤적은 거의 작업공간 바깥쪽 경계 위에 머물러요. "특이점 근처에서는 끝점이 사실상 1차원 곡선 위만 누빌 수 있다" 는 게 시각적으로 보입니다.

 

📐 한눈에 정리

2-DOF 평면 로봇팔의 특이점은 결국 다음 한 줄로 요약됩니다.

특이점은 팔이 일자로 펴지거나 완전히 접힌 자세다.
이때 끝점은 한 방향(반지름 방향) 으로 움직일 수 없다.

그리고 자코비안 관점에서는 다음 세 가지가 동시에 일어납니다.

  • $\det(\mathbf{J}) = 0$ — 행렬이 가역성을 잃음
  • 속도 타원이 직선으로 납작해짐 — 한 차원이 사라짐
  • 조건수 $\kappa \to \infty$ — IK가 폭주

왜 IK가 폭주할까요? 끝점을 막힌 방향으로 조금 움직이려면, 관절을 무한히 빠르게 돌려야 하기 때문입니다. 실제 로봇에서는 모터가 따라갈 수 없으니, 추종 오차가 폭발하거나 시스템이 진동하죠.

그래서 실제 로봇 제어에서는 특이점 근처를 의도적으로 피하거나, damped least squares 같은 보정 기법으로 부드럽게 통과시키는 방법을 씁니다.

 

📘 다음 편 예고

지금까지 우리는 한 점에서 다른 점으로 어떻게 가는가, 갈 수 있는가, 그리고 어디서 막히는가를 다뤘습니다.

그런데 실제 로봇은 한 점에서 다른 점으로 "순간 이동"하지 않습니다. 시간을 두고, 부드럽게 따라가야 해요.

"여기서 저기까지, 어떤 모양으로 움직일 것인가?"

이게 바로 궤적 계획(Trajectory Planning)입니다. 다음 글 #6 궤적 시각화 도구 에서는 3차 다항식과 5차 다항식이 어떻게 다른 모양의 움직임을 만드는지, 위치/속도/가속도 그래프를 직접 보면서 비교해보겠습니다.