DROID-SLAM + CLIP 기반
멀티모달 실내 내비게이션 시스템

측위 공간매핑 및 시각장애인 실내 이동지원 S/W 개발

프로젝트 기간
2024.01 - 2024.10
팀 구성
3인 팀
역할
SLAM 시스템 담당
DROID-SLAM OpenAI CLIP A* Algorithm Python Pytorch HATIO Eye Device

프로젝트 개요

핵심 문제 정의

기존 실내 내비게이션 시스템은 "3층 화장실 좌표(x:15.2, y:8.7)"처럼 수치 좌표 기반으로만 목적지를 설정했습니다. 그러나 실제 시각장애인 사용자는 "소파", "입구 안내 데스크", "엘리베이터"처럼 의미론적 특징으로 목적지를 인지합니다. 이는 단순 좌표 매칭으로 해결할 수 없는 본질적 간극이었습니다.

솔루션 접근법

Vision-Language Model인 CLIP을 도입하여 텍스트 쿼리를 시각적 공간 정보와 연결하는 멀티모달 아키텍처를 구축했습니다. 이를 통해 기존 좌표 기반 방식에 자연어 기반 목적지 설정 기능을 추가하여 시스템의 자유도와 접근성을 크게 향상시켰습니다.

87%
CLIP 목적지 인식 정확도
(Top-1 Accuracy)
0.09m
측위 평균 오차
(목표 대비 5배 우수)
15개
랜드마크 등록
(IT대학 3층)
100%
실사용 내비게이션
성공률

기술적 구현

1. CLIP 통합 아키텍처

모델 선정 및 최적화

  • 모델: OpenAI CLIP ViT-B/32 (약 151M 파라미터)
  • 임베딩 공간: 512차원 벡터 공간에서 텍스트-이미지 유사도 계산
  • 추론 최적화: 배치 처리 및 임베딩 사전 계산으로 실시간 추론 가능

목적지 인식 파이프라인

1
공간 매핑 단계 특징점 추출
DROID-SLAM이 생성한 3D 포인트 클라우드에서 주요 랜드마크 위치를 카메라 프레임과 함께 저장합니다. 각 랜드마크 지점에서 RGB 이미지를 추출하고, 해당 이미지의 SLAM 좌표(x, y, z)를 메타데이터로 연결합니다.
{ "landmark_id": "L001", "position": {"x": 15.2, "y": 8.7, "z": 0.0}, "image_path": "landmarks/L001_redsofa.jpg", "clip_embedding": [512차원 벡터] }
2
텍스트 쿼리 처리
사용자가 음성 또는 텍스트로 목적지를 입력하면 ("빨간색 소파로 안내해주세요"), CLIP의 텍스트 인코더가 이를 512차원 임베딩 벡터로 변환합니다.
3
유사도 기반 매칭
저장된 모든 랜드마크의 이미지 임베딩과 입력된 텍스트 임베딩 간 코사인 유사도를 계산합니다.
similarity = cosine_similarity(text_embedding, image_embedding) # 가장 높은 유사도 점수를 가진 랜드마크의 SLAM 좌표를 최종 목적지로 결정
4
좌표 변환 및 경로 생성
CLIP이 반환한 랜드마크 좌표를 DROID-SLAM의 글로벌 좌표계로 변환하고, 이를 A* 알고리즘의 목표 노드로 설정합니다.

실험적 검증

테스트 환경: 경북대학교 IT대학 3층 복도

  • 등록 랜드마크: 15개 (빨간 소파, 엘리베이터, 화장실 표지판, 자판기 등)
  • Top-1 Accuracy: 87% (15개 중 13개 정확 매칭)
  • Top-3 Accuracy: 100% (상위 3개 후보 내에 정답 포함)

* 오류 사례: "자판기" 쿼리 시 "정수기"를 1순위로 반환 → 해결책: 다중 앵글 촬영 및 텍스트 augmentation 적용

2. A* 알고리즘 기반 경로 최적화

그래프 구조 및 노드 정의

DROID-SLAM이 생성한 3D 포인트 클라우드를 2D 평면으로 투영(z축 제거)한 뒤, 이를 그리드 맵으로 변환했습니다.

  • 그리드 해상도: 0.1m × 0.1m (실제 공간 10cm를 1셀로 표현)
  • 장애물 판정: 포인트 밀도 기반 occupancy grid
  • 그래프 연결: 각 그리드 셀을 노드로, 인접한 8방향 셀을 엣지로 연결

휴리스틱 함수 설계

A* 알고리즘의 핵심은 f(n) = g(n) + h(n) 평가 함수입니다.

g(n): 시작점에서 노드 n까지의 실제 이동 비용 - 직선 이동: 1.0 - 대각선 이동: √2 ≈ 1.414 - 회전 패널티: 추가 0.2 (급격한 방향 전환 시 시각장애인에게 혼란 야기)
h(n): 노드 n에서 목표까지의 추정 비용 (휴리스틱) - 유클리드 거리 사용: h(n) = √((x_goal - x_n)² + (y_goal - y_n)²) - Admissible 조건 충족: 실제 비용을 과대평가하지 않음

최적화 전략

경로 평활화

Catmull-Rom Spline 보간으로 계단형 경로를 부드럽게 변환하여 회전 각도 변화율 43% 감소

동적 장애물 회피

실시간 감지된 장애물 발생 시 그리드 비용 증가 및 A* 재계획으로 우회 경로 생성

계층적 경로 계획

경로를 세그먼트로 분할하여 계산 복잡도를 O(n²)에서 O(k·m²)로 감소

Pygame 기반 경로 시각화

RViz와 Gazebo 같은 로보틱스 전용 도구 대신 pygame을 선택했습니다. 경량 라이브러리로 빠른 동작과 리소스 효율성을 확보했으며, 팀원 간 실시간 디버깅과 빠른 프로토타이핑을 가능하게 했습니다.

  • 그리드 맵: 흰색(자유 공간), 검은색(장애물), 회색(미탐색)
  • 위치 표시: 현재 위치(파란색), 목표 지점(빨간색)
  • 경로 표시: 계획 경로(초록색), 실시간 추적(노란색)
  • 성능: 60 FPS 이상 유지, 경량 라이브러리로 리소스 효율 극대화
  • 장점: 설치 간편, 2D 렌더링 속도 우수, 이벤트 처리 직관적

3. 통합 시스템 파이프라인

1
초기화 단계
DROID-SLAM 지도 로드 → CLIP 모델 로드 → 랜드마크 데이터베이스 로드 (이미지 임베딩 사전 계산)
2
사용자 입력 처리
음성 입력 → STT 변환 → 텍스트 쿼리 추출 → CLIP 텍스트 인코더 실행
3
목적지 결정
텍스트 임베딩 vs 랜드마크 임베딩 유사도 계산 → Top-K 후보 추출 및 사용자 확인 (음성 피드백: "빨간색 소파가 맞습니까?")
4
경로 생성
현재 위치(SLAM 추정) → 목표 좌표(CLIP 매칭) → A* 알고리즘 실행 → 최적 경로 생성 → 경로 평활화 및 세그먼트 분할
5
내비게이션 실행
실시간 위치 추적 (SLAM + IMU 센서 퓨전) → 경로 이탈 감지 → A* 재계획 → 음성 안내 ("3미터 직진 후 우회전", "목적지 도착")
6
예외 처리
SLAM 추적 실패 → IMU 기반 Dead Reckoning으로 전환 / CLIP 매칭 신뢰도 낮음 → 사용자에게 목적지 재확인 요청

성능 평가 및 결과

1. 측위 정확도

평가 환경: 경북대학교 IT대학 3층 복도 (11m × 1.8m)

기준값: 실측 거리 대비 SLAM 좌표 스케일링 (11:20)

  • Absolute Pose Error (APE): 평균 0.17 (스케일링 전)
  • 실제 오차: 약 0.09m (목표 0.5m 대비 5배 이상 우수)

2. CLIP 기반 목적지 인식

87%
Top-1 Accuracy
100%
Top-3 Accuracy
실시간
CLIP 추론 속도
(임베딩 사전계산)
75회
총 테스트 시도
(15개 랜드마크 × 5회)

3. A* 경로 계획 성능

계획 시간

  • 단순 직선 경로: 평균 8ms
  • 장애물 회피 경로: 평균 23ms
  • 복잡한 다층 경로: 평균 67ms (계층적 계획 적용)

경로 품질

  • 최적성: 생성 경로 길이가 이론적 최단 경로 대비 평균 1.08배 (8% 오버헤드)
  • 평활도: 회전 각도 변화율이 기존 대비 43% 감소 (Spline 보간 효과)

4. 실사용 테스트

장소: 맹인학교 복도

참여자: 시각장애인 사용자 3명

시나리오: "교무실", "화장실", "강당" 등 목적지 안내

100%
내비게이션 정확도
(모든 사용자 목적지 도착)
4.3/5.0
사용자 만족도
(음성 안내 명확성, 경로 자연스러움)

* 개선 요구사항: 계단 감지 기능 추가, 음성 안내 속도 조절 옵션

나의 기여 및 기술적 차별점

주요 담당 업무

기술적 차별점

멀티모달 융합

기존 SLAM 시스템의 좌표 기반 내비게이션에 CLIP 통합으로 자연어 기반 목적지 설정 기능 추가

실시간 성능

임베딩 사전계산과 계층적 A* 구조로 실시간 경로 계획 및 목적지 인식 실현

강인성 확보

IMU 센서 퓨전과 동적 재계획으로 조명 변화, 동적 장애물, 추적 실패 등 예외 상황 대응

사용자 중심 설계

회전 패널티, 경로 평활화, 명확한 음성 안내 등 시각장애인의 실제 이동 패턴을 고려한 설계

주요 산출물

소스 코드

  • DROID-SLAM 매핑 및 로컬라이제이션 모듈 (C++/Python)
  • CLIP 통합 및 랜드마크 매칭 시스템 (PyTorch)
  • A* 경로 계획 및 시각화 (Python/Pygame)
  • 센서 퓨전 및 제어 로직 (ROS)

데이터셋

  • 경북대학교 IT대학 3층 3D 지도 (PCD 포맷)
  • 맹인학교 복도 3D 지도 (PCD 포맷)
  • 랜드마크 이미지 및 CLIP 임베딩 데이터베이스 (15개 객체)

문서

  • 시스템 아키텍처 설계서
  • CLIP-SLAM 통합 기술 보고서
  • A* 최적화 전략 및 성능 분석 문서
  • 사용자 매뉴얼 (시각장애인용 음성 가이드 포함)

프로젝트 의의

이 프로젝트는 단순한 기술 검증을 넘어 실제 시각장애인 보조 디바이스인 HATIO Eye Ver2를 위해 설계되었으며, Vision-Language Model과 Classic한 경로 계획 알고리즘을 효과적으로 융합하여 시각장애인의 이동권 보장이라는 사회적 가치를 실현한 사례입니다.