로봇센싱 알고리즘 설계
📌 개요
- 센서의 원시 값은 그대로 못 씀 — 노이즈가 끼고, 영점이 틀어지고, 가끔 엉뚱한 값이 튐
- 센싱 알고리즘 = 원시 데이터를 보정(캘리브레이션) → 필터링 → 융합의 단계로 믿을 수 있는 값으로 만드는 소프트웨어
- 출제 포인트: 필터 3종(이동평균·저역통과·중앙값)의 특성 구분, 상보 필터(자이로+가속도계), 칼만 필터의 예측–보정 구조, 이상치 제거
📖 핵심 개념
캘리브레이션 — 영점과 눈금을 맞춘다
- 오프셋(영점) 보정: 입력이 0일 때 출력이 0이 아니면 그 차를 빼 줌 — 자이로는 기동 시 정지 상태 평균으로 바이어스 추정이 표준
- 스케일(감도) 보정: 기준 입력 대비 출력 비율 교정 — 두 점(영점·스팬) 보정이 기본
- 카메라 캘리브레이션: 내부 파라미터(초점거리·왜곡 계수 — 체커보드로) + 외부 파라미터(extrinsic — 센서와 로봇 좌표계 간 상대 자세). 센서 융합의 전제는 좌표계 정합이다 (→ 좌표계, 로봇 시스템 통합 설계)
필터링 3형제 — 노이즈를 다듬는 기본기 (시험 단골)
| 필터 | 원리 | 강점 | 약점 |
|---|---|---|---|
| 이동평균 | 최근 N개 평균 | 구현 최단순, 랜덤 노이즈 완화 | 지연(N/2 샘플), 스파이크에 오염 |
| 저역통과(1차 IIR) | y_k = \alpha x_k + (1-\alpha)y_{k-1} | 메모리 1개, 부드러운 응답 | 지연, α 튜닝 필요 |
| 중앙값(Median) | 최근 N개의 중앙값 | 스파이크(이상치)에 강함 | 정렬 비용, 지연 |
구분 포인트: 가끔 튀는 스파이크 → 중앙값 필터(평균 계열은 튄 값에 끌려감), 잔잔한 랜덤 노이즈 → 평균·저역통과. 필터는 공짜가 아니다 — 강하게 걸수록 지연이 커져 제어 응답을 해친다 (트레이드오프).
이상치(Outlier) 제거
필터 이전에 물리적으로 불가능한 값을 걸러 낸다.
- 범위 검사: 센서 사양 범위 밖 값 폐기 (거리 -1 m, 각도 400°)
- 변화율 검사: 물리적으로 불가능한 급변 폐기 (1 ms에 10 m 이동)
- 통계적 검사: 최근 분포에서 3σ 밖 값 의심
- 폐기가 연속되면 "노이즈"가 아니라 센서 고장으로 판정 전환 (→ 고장 감지)
상보 필터 — 두 센서의 장점만 합성 (시험 단골)
IMU 자세 추정의 고전 해법:
- 자이로: 단기(고주파)엔 정확하지만 적분 드리프트로 장기엔 흘러감
- 가속도계: 장기(저주파)엔 중력 기준으로 정확하지만 움직임·진동에 단기 노이즈
- 상보 필터: 자이로 적분에 고역통과, 가속도계 기울기에 저역통과를 걸어 합침 — \theta = \alpha(\theta_{prev} + \omega \Delta t) + (1-\alpha)\theta_{acc} (α ≈ 0.98). 서로의 약점을 보완(상보) 한다
칼만 필터 — 예측과 측정의 확률적 융합
예측(Predict) 과 보정(Update) 을 반복하는 최적 추정기 (개념 수준).
- 예측: 운동 모델로 다음 상태를 예상 ("바퀴가 이만큼 돌았으니 여기쯤") — 불확실성은 커짐
- 보정: 센서 측정으로 예상을 수정 — 불확실성이 작은 쪽에 더 큰 가중치(칼만 이득)
- 모델도 측정도 완벽하지 않다는 전제에서 둘을 확률적으로 섞는 것이 핵심
- 비선형 시스템엔 확장 칼만 필터(EKF) — 위치인식·SLAM의 표준 도구 (→ 이동로봇 위치인식, 이동로봇 SLAM)
센서 융합의 설계
- 이종 융합: 원리가 다른 센서의 결합 — 엔코더(누적 오차) + IMU(드리프트) + GPS/랜드마크(절대 보정): 상대 센서의 누적 오차를 절대 센서가 주기적으로 리셋
- 중복 융합: 같은 대상을 여러 센서로 — 다수결·평균으로 신뢰성 향상, 고장 검출(값 불일치)
- 융합의 3대 전제 (시험 포인트): 좌표계 정합(외부 캘리브레이션), 시간 정합(타임스탬프 동기 → 로봇센서 인터페이스), 불확실성 모델(어느 센서를 얼마나 믿을지)
파이프라인 설계 원칙
- 파이프라인 순서: 원시값 → 이상치 제거 → 캘리브레이션 적용 → 필터링 → (융합) → 물리량 발행
- 원시 데이터도 함께 기록해 둔다 — 알고리즘 개선·사후 분석은 원시 데이터로 한다 (→ 데이터 기록·재생)
📊 다이어그램 · 수식
센싱 파이프라인
flowchart LR
R["원시값"] --> O["이상치 제거
범위·변화율 검사"] --> C["캘리브레이션
오프셋·스케일"] --> F["필터링
평균·저역·중앙값"] --> FU["융합
상보·칼만"] --> P["물리량 발행"]
R -. 원시 기록(사후 분석용) .-> LOG["로그"]상보 필터와 저역통과 필터
🎯 핵심 요약 · 암기 포인트
✏️ 예상문제
1. 거리 센서 값이 대체로 안정적이지만 가끔 한 샘플씩 크게 튄다. 가장 적합한 필터는?
① 이동평균 필터 ② 중앙값(median) 필터 ③ 고역통과 필터 ④ 적분기
정답 및 해설
정답: ② 중앙값 필터는 튄 값이 정렬의 가운데에 오지 못하게 해 스파이크를 통째로 무시한다. 이동평균은 튄 값이 평균에 섞여 오염되며, 고역통과는 오히려 급변만 남긴다.
2. 상보 필터에서 자이로와 가속도계에 각각 적용되는 처리로 옳은 것은?
① 자이로에 저역통과, 가속도계에 고역통과 ② 자이로 적분에 고역통과 성격, 가속도계 기울기에 저역통과 성격의 가중 합성 ③ 두 센서 모두 고역통과 ④ 두 센서 모두 대역통과
정답 및 해설
정답: ② 자이로는 단기(고주파)에 정확하므로 그 몫을, 가속도계는 장기(저주파) 기준을 제공하므로 저주파 몫을 맡긴다 — θ = α(θ+ωΔt) + (1−α)θ_acc, α≈0.98. 각자의 약점(드리프트/진동)을 상대가 보완한다.
3. 칼만 필터에 대한 설명으로 옳지 않은 것은?
① 예측 단계에서 운동 모델로 다음 상태를 예상한다 ② 보정 단계에서 측정값으로 예측을 수정한다 ③ 불확실성이 작은 정보에 더 큰 가중치를 준다 ④ 모델과 측정이 모두 완벽하다는 전제에서 동작한다
정답 및 해설
정답: ④ 정반대다 — 모델도 측정도 오차를 가진다는 전제에서, 각각의 불확실성을 추적하며 확률적으로 최적 배합(칼만 이득)을 구하는 것이 칼만 필터의 본질이다.
4. 엔코더 오도메트리의 누적 오차 문제에 대한 융합 설계로 가장 적절한 것은?
① 엔코더 값에 더 강한 저역통과 필터를 건다 ② GPS·랜드마크 같은 절대 위치 센서로 주기적으로 보정한다 ③ 엔코더 분해능을 낮춘다 ④ 오차가 쌓이기 전에 로봇을 재부팅한다
정답 및 해설
정답: ② 누적(드리프트) 오차는 필터로 없어지지 않는다 — 상대 센서의 숙명이다. 절대 기준(GPS, 랜드마크, 지도 매칭)이 주기적으로 오차를 리셋하는 이종 융합이 정석이며, 칼만 필터가 그 표준 틀이다.
5. 센서 융합의 전제 조건으로 가장 거리가 먼 것은?
① 센서 간 좌표계 정합(외부 캘리브레이션) ② 타임스탬프 기반의 시간 정합 ③ 각 센서의 불확실성(신뢰도) 모델 ④ 모든 센서가 같은 제조사일 것
정답 및 해설
정답: ④ 융합에 필요한 것은 공간(좌표)·시간(동기)·신뢰도(불확실성)의 정합이지 제조사 통일이 아니다. 오히려 원리가 다른 센서의 조합이 약점 상쇄에 유리하다.
🔗 관련 노트
- 로봇센서 드라이버 구현 — 알고리즘이 올라타는 드라이버
- 로봇센서 작동 원리 — 드리프트·노이즈의 원인
- 이동로봇 위치인식 — EKF 기반 위치 추정의 실제
- 인지지능 알고리즘 설계 — 상위 인지 파이프라인
- 로봇 소프트웨어 개발환경 — 데이터 기록·재생 기반 개발
- _MOC 지능소프트웨어