이진 기술자 기반 실시간 카메라 자세 추정 및 보정 알고리즘 연구

1 분 소요

프로젝트 개요

ORB-SLAM의 관리자 및 사용자 모듈 개발

프로젝트 개발

  • 프로젝트 형태 : 위탁 과제
  • 개발 기간 : 2018. 07. 16 - 2018. 11. 16
  • 개발 인원 : 2명 (과제 참여 인원)
  • 역할 : ORB-SLAM의 관리자 및 사용자 모듈 개발
    • Ubuntu 기반의 프로젝트를 Windows에서 개발할 수 있도록 포팅
    • 이미지 파일뿐만 아니라 동영상 파일이나 웹캠을 활용하여 SLAM을 수행할 수 있도록 구현
    • SLAM을 수행했을 때 매핑되는 데이터를 맵 파일로 저장 (맵 파일 로딩 기능 포함)
    • 시스템 실행시 로딩하는 BoW(Vocabulary) 파일을 이진 파일 형태로 변환
      • 이진 파일 형태로 로딩했을 때 아스키 파일 대비, 파일 로딩 시간과 메모리 소비 효율성에 대해 보고서 작성

개발 환경

  • 개발 OS : Windows 10
  • 개발 언어 : C++11
  • 개발 도구 : CMake-GUI(v.3.12.0), Boost Library(v1.67.0), OpenCV(v3.4.1), Visual Studio 2015 Professional
  • 장치 : Webcam
  • 개발에 사용한 오픈소스 : ORB-SLAM 2

실행 화면

slam-or-localization-mode

map-file

SLAM이 수행되고 나면 맵 파일이 생성되고, 이 맵 파일을 로딩하여 이어서 매핑을 하거나 Localization에 활용할 수 있다.

동작 구조

동작 구조

  • 이미지(*.jpg)를 입력 파일로 사용해야 했던 부분을 개선
  • 동영상이나 웹캠을 사용하는 경우에도 이미지 프레임을 얻어서 SLAM 수행
  • SLAM을 통해 매핑되는 (키프레임, 포인트 등)데이터는 Map file로 저장
  • Map file을 미리 로드 한 이후에 SLAM 또는 Localization을 수행 가능 (선택 사항)

개발 후기

이미지 파일뿐만 아니라 동영상 파일이나 웹캠을 활용하여 SLAM을 수행할 수 있도록 기능을 추가하는 것은 영상 처리 과목을 이수했기 때문에 수월하게 개발할 수 있었고 매핑된 데이터를 맵 데이터로 저장하기 위해서 boost 라이브러리에서 제공해주는 객체 직렬화(Object Serialization)를 사용하였습니다. 그래서 SLAM을 수행하여 최초로 맵 파일이 생성되면, 다음에 실행할 때는 해당 맵 파일을 로딩한 후 이어서 매핑하거나 Localization을 수행할 수 있도록 구현하였습니다.

시스템이 실행될 때마다 고속 이미지 인식을 위한 수치 벡터 파일을 로드하는데, 로드 시간이 평균 20초 이상 소요되었습니다. 시스템을 여러 번 재시작 해야 하는 특성상 개발과 사용에 불편함이 있었습니다. 그래서 텍스트 파일을 이진 파일 형태로 변환하면 파일 로드 시간이 줄어들 것이라는 아이디어를 가지고 해당 파일을 이진 파일로 변환하여 파일을 로드하는 로직을 수정했는데, 결과적으로 파일을 로드하는데 평균 0.5초가 소요되었고 시스템을 기존보다 원활히 사용할 수 있게 되면서 시스템 성능을 향상시킨 것에 보람을 느꼈습니다.

프로젝트를 진행하면서 예정된 기간보다 좀 더 일찍 구현을 마치고 잘 작동하는지 테스트를 해보며, 교수님께도 확인을 받는 과정이 잘 진행된 것 같고 최종적으로 프로젝트가 잘 마무리 되었다는 소식을 듣게 되어 뿌듯하였습니다.

카테고리:

업데이트: