이동로봇 충돌회피
📌 개요
- 이동로봇은 사람·카트·다른 로봇이 오가는 열린 공간을 달림 → 지도에 없는 장애물을 센서로 감지하고 피하거나 멈추는 능력이 안전의 핵심
- 지역 경로계획이 "어디로 피할까"라면, 이 노트는 감지 수단, 안전 거리·시간의 정량 계산, 동적 장애물 예측이라는 안전 관점
- 시험 출제 포인트: 센서별 특성, 충돌 예측 시간(TTC)과 안전 정지거리 계산, 코스트맵 팽창, 속도 장애물 개념
📖 핵심 개념
장애물 감지 센서
- 충돌회피의 시작 = 감지
- 센서마다 장단점이 달라 여러 센서를 조합(중복 안전) 하는 것이 일반적
| 센서 | 방식 | 특징 |
|---|---|---|
| LiDAR(라이다) | 레이저 반사 시간(ToF) | 거리 정확, 넓은 시야각. 유리·거울 등 투명/반사면에 취약 |
| 초음파 센서 | 음파 반사 | 저렴, 유리도 감지. 분해능 낮고 근거리 위주 |
| 뎁스 카메라 | 스테레오/구조광/ToF | 3차원 형상 인식, 낮은 장애물·튀어나온 물체 감지. 조명 영향 |
| 범퍼(접촉 스위치) | 물리 접촉 | 최후의 안전 수단 — 닿으면 즉시 정지. 접촉 후에야 감지 |
- 산업 현장 AGV/AMR: 안전 인증된 LiDAR(안전 스캐너) 로 로봇 전방에 보호 영역(Protective Field) 과 경고 영역(Warning Field) 을 설정 — 경고 영역 침입 시 감속, 보호 영역 침입 시 비상정지
- 속도가 빠를수록 영역을 크게 잡음
정적 장애물 vs 동적 장애물
- 정적 장애물: 움직이지 않는 것(벽, 선반, 세워 둔 팔레트). 지도·코스트맵에 반영하고 전역 계획에서 피한다
- 동적 장애물: 움직이는 것(사람, 지게차, 다른 로봇). 위치만이 아니라 속도(어디로 가는지)까지 고려해야 하며, 실시간 감지·예측이 필수다
코스트맵과 팽창 — "가까이 가지 않기"의 구현
ROS 내비게이션의 코스트맵(Costmap) 은 격자지도 위에 충돌 위험 비용을 입힌 지도다.
-
치명(Lethal) 영역: 장애물 셀 자체 — 로봇 중심이 들어가면 확정 충돌
-
내접원 충돌 영역: 장애물로부터 로봇 내접 반경 이내 — 사실상 충돌
-
팽창(Inflation) 영역: 그 바깥으로 거리에 따라 지수적으로 감소하는 비용을 부여 — 경로계획기가 자연스럽게 장애물에서 떨어진 길을 선호하게 만든다
-
센서로 새 장애물이 잡히면 코스트맵이 실시간 갱신 → 지역 계획기(DWA 등)가 갱신된 코스트맵을 보고 회피
-
즉 감지 → 코스트맵 갱신 → 지역 계획의 회피가 이동로봇 충돌회피의 기본 루프
얼마나 위험한가 ① — 충돌 예측 시간 (TTC)
- 동적 장애물의 위험도를 정량화하는 가장 간단한 지표 = 충돌 예측 시간(TTC, Time To Collision)
- 현재의 상대속도가 유지된다고 가정할 때 충돌까지 남은 시간:
- (d: 현재 거리, v_{rel}: 접근하는 상대속도)
- TTC가 임계값보다 작으면 감속·정지·회피 기동을 시작
- 서로 접근하지 않으면(v_{rel} \le 0) TTC는 무한대, 즉 충돌 위험 없음으로 봄
얼마나 위험한가 ② — 안전 정지거리
- "이 속도로 달려도 되는가"는 정지거리로 판단
- 위험을 인지하고 완전히 멈출 때까지 로봇이 나아가는 거리는:
- 반응 거리: 감지·판단·명령 전달에 걸리는 반응시간 t_{react} 동안 그대로 진행하는 거리
- 제동 거리: 감속도 a로 속도 v에서 0까지 줄이는 동안의 거리 — 속도의 제곱에 비례하므로 속도를 절반으로 줄이면 제동 거리는 1/4이 된다
안전 스캐너의 보호 영역 크기를 속도에 따라 바꾸는 이유가 바로 이 식이다: 빠르게 달릴수록 d_{stop}이 길어지므로 더 먼 곳부터 감지해야 한다.
동적 장애물 회피 — 속도 장애물 (Velocity Obstacle)
-
움직이는 장애물은 "지금 위치"가 아니라 "속도"를 기준으로 피해야 함
-
속도 장애물(VO, Velocity Obstacle) 은 이 아이디어의 표준 개념
-
장애물의 속도가 유지된다고 가정할 때, 로봇이 그 속도를 선택하면 언젠가 충돌하게 되는 로봇 속도들의 집합을 속도 공간에 그린 것
-
로봇은 자신의 속도 공간에서 VO 밖의 속도를 고르면 충돌하지 않는다
-
여러 로봇이 서로를 피하는 상황으로 확장한 것이 RVO(Reciprocal VO)·ORCA이며, 다중 로봇 군집 주행에 쓰인다
DWA(→ 이동로봇 지역 경로계획)가 "지금 장애물 위치" 기준의 평가라면, VO 계열은 "장애물의 미래 궤적"까지 반영한 회피라는 차이를 기억하자.
충돌회피 대응의 단계
실무 시스템은 위험도에 따라 대응을 계층화한다.
- 경로 회피: 여유가 있으면 지역 계획기가 돌아가는 경로 생성
- 감속: 경고 영역 침입, TTC 감소 시 속도 스케일 다운
- 정지: 보호 영역 침입, TTC 임계 미만 시 정지
- 접촉 정지: 범퍼 감지 시 즉시 비상정지 (최후 수단)
📊 다이어그램 · 수식
이동로봇 충돌회피 기본 루프
flowchart LR
S["센서
LiDAR·초음파·뎁스카메라"] --> D["장애물 감지·추적
위치 + 속도 추정"]
D --> C["코스트맵 갱신
치명 + 팽창 영역"]
D --> R["위험도 평가
TTC·안전 영역"]
C --> L["지역 경로계획 (DWA 등)
회피 경로·속도 결정"]
R -- "위험 높음" --> E["감속 → 정지 → 비상정지"]
L --> V["속도 명령 (v, ω)"]핵심 계산식
충돌 예측 시간:
안전 정지거리 (반응 거리 + 제동 거리):
예: v = 1\,\text{m/s}, t_{react} = 0.5\,\text{s}, a = 0.5\,\text{m/s}^2이면 d_{stop} = 1 \times 0.5 + \dfrac{1^2}{2 \times 0.5} = 0.5 + 1.0 = 1.5\,\text{m}
🎯 핵심 요약 · 암기 포인트
✏️ 예상문제
1. 전방 10 m 거리의 장애물에 로봇이 상대속도 2 m/s로 접근하고 있다. 충돌 예측 시간(TTC)은?
① 2초 ② 5초 ③ 10초 ④ 20초
정답 및 해설
정답: ② TTC = d / v_{rel} = 10 / 2 = 5초. 상대속도가 유지된다는 가정 아래 충돌까지 남은 시간이다.
2. 속도 1 m/s로 주행하는 로봇의 반응시간이 0.5초, 감속도가 0.5 m/s²일 때 안전 정지거리는?
① 1.0 m ② 1.25 m ③ 1.5 m ④ 2.0 m
정답 및 해설
정답: ③ 반응 거리 = 1 \times 0.5 = 0.5 m, 제동 거리 = \dfrac{1^2}{2 \times 0.5} = 1.0 m 합계 0.5 + 1.0 = 1.5 m. 속도가 빨라지면 제동 거리가 제곱으로 늘어나므로 보호 영역도 그만큼 커져야 한다.
3. 속도 장애물(Velocity Obstacle, VO)에 대한 설명으로 옳은 것은?
① 장애물의 현재 위치만을 기준으로 회피 방향을 정한다 ② 선택하면 미래에 충돌하게 되는 로봇 속도의 집합을 속도 공간에 표현한 것이다 ③ 정적 장애물 전용 기법이다 ④ 지도 작성에 사용되는 격자 표현법이다
정답 및 해설
정답: ② VO는 장애물의 속도가 유지된다고 가정하고 "이 속도를 고르면 언젠가 부딪힌다"는 속도들의 집합이다. 로봇은 VO 밖의 속도를 선택해 동적 장애물을 예측적으로 회피한다. 위치 기준 회피(①)와 대비되는 것이 핵심이다.
4. ROS 코스트맵에서 장애물 주변에 팽창(inflation) 영역을 두는 목적으로 옳은 것은?
① 지도 데이터 압축 ② 센서 잡음 필터링 ③ 경로계획기가 장애물로부터 여유를 둔 경로를 선호하도록 비용을 부여 ④ 로봇의 최고 속도 제한
정답 및 해설
정답: ③ 팽창 영역은 장애물에서 멀어질수록 감소하는 비용을 격자에 입혀, 최소 비용 경로를 찾는 계획기가 자연스럽게 장애물과 거리를 둔 길을 고르게 만든다. 로봇 크기 보정(구성공간 팽창)과 안전 여유 확보를 겸한다.
5. 이동로봇의 장애물 감지 센서에 대한 설명으로 옳지 않은 것은?
① LiDAR는 거리 측정이 정확하지만 유리 같은 투명면에 취약하다 ② 초음파 센서는 저렴하고 유리도 감지할 수 있다 ③ 뎁스 카메라는 3차원 형상을 인식해 낮은 장애물 감지에 유리하다 ④ 범퍼는 장애물이 닿기 전에 미리 감지하는 비접촉 센서다
정답 및 해설
정답: ④ 범퍼는 물리적으로 접촉해야 동작하는 접촉식 센서로, 다른 센서가 모두 놓쳤을 때의 최후 안전 수단이다. 접촉 감지 즉시 비상정지시킨다.
🔗 관련 노트
- 이동로봇 지역 경로계획 — 회피 경로·속도를 실제로 만드는 층
- 이동로봇 전역 경로계획 — 코스트맵·구성공간 팽창의 기초
- 머니퓰레이터 충돌회피 — 머니퓰레이터 쪽의 충돌회피
- 로봇센서 작동 원리 — 센서 원리의 상세
- _MOC 모션소프트웨어