김임박조

cdc wiki
이동: 둘러보기, 검색

프로젝트 개요

기술개발 과제

국문 : 드론 조종을 위한 UI/UX 개발(스트리밍, 가상/실공간 매핑을 통한 거리 산출)

영문 : UI/UX for Controlling Drones Using FPV Streaming and SLAM

과제 팀명

김임박조(5조)

지도교수

이동희 교수님

개발기간

2019년 9월 ~ 2019년 12월 (총 4개월)

구성원 소개

서울시립대학교 컴퓨터과학부 20149200** 김*우(팀장)

서울시립대학교 컴퓨터과학부 20149200** 박*수

서울시립대학교 컴퓨터과학부 20149200** 임*일

서론

개발 과제의 개요

개발 과제 요약

  • 드론으로부터 멀리 떨어진 지역에 있는 조종자가 드론 주위의 상황을 실시간으로 전송받으며 조종을 보다 편리하게 할 수 있는 UI/UX를 개발한다.
  • 기존 GPS 센서를 이용한 대략적인 위치 정보 파악 이상으로, 카메라를 통한 드론 주위 영상을 전송 및 처리하여 도심지와 같은 복잡한 환경에서도 드론 조종을 기존보다 용이하게 한다.
  • 드론이 촬영한 영상을 처리해 지형 측량 등에 이용할 수 있게 한다.
  • 위험하거나 협소해 사람이 직접 접근할 수 없는 장소에 드론을 이용해 지형구조에 대한 정보를 얻고, 해당 지역에 대한 안전성을 확보한다.

개발 과제의 배경 및 효과

  • 기존 드론의 경우 저가형은 GPS 센서나 카메라 등이 없어 조종자가 직접 시야를 확보할 수 있는 곳에서만 비행이 가능했으며, GPS 센서가 있다고 하더라도 신호의 정밀도 문제로 일정 정도 이상의 정확한 위치를 파악하는 데 어려움이 있었다.
  • 드론에 카메라가 장착되어 있는 경우 촬영한 영상을 Wi-Fi 또는 이동통신망 등을 통해 전송할 수 있는 기술이 이미 널리 쓰이고 있다. 하지만 이러한 정보를 실시간으로 처리해 드론 주위의 환경에 대한 정보를 얻어 조종에 도움을 주는 시도가 드물었다.
  • 즉, 지금까지는 영상 없이 GPS 정보만 보고 파악하거나, 영상이 드론으로부터 전송되더라도 조종자가 직접 보고 판단해야 하는 시스템이었다. 이러한 경우 조종자가 정확한 위치 정보(거리, 고도 등)를 파악하지 못해 불편함이 따른다.
  • 따라서 전송된 영상으로부터 거리 정보를 얻고, 조종자가 그것을 활용할 수 있는 UI/UX 시스템을 만들어 보다 정밀한 비행이 가능하게 한다.
  • 또한, 영상 처리 기술을 활용해 조종자가 없는 자율 비행 드론에도 응용할 수 있을 것이다. 예를 들어, GPS 신호가 잘 수신되지 않는 협소한 공간 등에서는 주위 영상으로부터 구체적인 위치 정보를 얻어 드론의 움직임을 결정하는 데 사용할 수 있다.

개발 과제의 목표 및 내용

  • 드론에 있는 여러 센서와 영상 정보를 복합적으로 활용할 수 있는 UI/UX 개발
  • 드론으로부터 전송된 영상을 조종자에게 표시함과 동시에 영상을 처리해 얻은 공간 정보(거리, 고도 등)를 지도상에 표시되는 GPS 좌표 정보와 같이 전달
  • 영상으로부터 얻어진 정보는 표시할 뿐만 아니라 별개로 저장하여 추후 드론 측량이나 자율 비행등에도 응용할 수 있도록 함
  • 여러 오픈 소스(OpenCV, Qt, etc.)를 활용해 개발 기간을 단축하면서도 일정 품질 이상의 프로젝트를 완성

관련 기술의 현황

관련 기술의 현황 및 분석(State of art)

  • 기술동향
    • 공간정보 서비스는 공간정보를 생산, 관리, 유통하거나 다른 산업과 융, 복합하여 시스템을 구축하고 제공하는 서비스를 의미한다. 디지털 기술의 발전에 따라 공간정보 서비스는 전통적인 단순한 위치 정보 제공을 넘어서 공간에서 발생하는 다양한 정보의 제공으로까지 확장되었다. 특히 최근에는 VR/AR 기술의 발전과 함께 산업의 범위가 크게 넓어졌다.
    • 이러한 공간정보 서비스를 제공하기 위한 전통적인 방식으로는 지상 측량이나 유인 항공 측량 등이 있었으나, 무인항공기 기술이 발전함에 따라 많은 부분을 드론 측량으로 대신할 수 있을 것으로 보여진다.
    • 특히 드론 측량의 경우 지상 측량 과정에서 발생하는 여러 오차 요인을 많이 제거할 수 있으므로 보다 정확한 결과물 산출이 가능하며, 작업 공정도 단축할 수 있다.
    • 자율비행체 전반에 관한 특허가 아닌, 드론을 이용한 측량 분야에 한하더라도 관련 특허의 출원량은 2015년 이후 크게 증가했다. 2014년도 이전의 경우 매년 출원 건수가 한 자릿수에 머물렀지만 2015년 17건, 2016년 28건, 2017년 22건으로 증가했으며, 2018~2019년에도 관련 특허가 다수 등록되었다.
  • 특허조사
    • 등록번호 10-1650136 “원위치 자동복귀 · 컬러트래킹 자동추적을 갖는 스마트 드론 장치” (등록일자 2016년 08월 16일) : 개인 출원 특허
      • 스마트 디바이스상의 드론제어용 어플리케이션과 더불어, 레이저고도측정 및 컬러트래킹을 통한 특정객체위치 인식과 고도를 유지한 상태로 추적하는 방식에 관한 특허
    • 등록번호 10-1933428 “영상을 수신하여 실시간으로 사람인식 영상분석 프로그램을 실행하는 드론 시스템” (등록일자 2018년 11월 14일) : 기업 출원 특허 (휴인스)
      • 장착된 EO카메라 / IR카메라를 활용해 촬영한 두 가지 영상을 통신모듈을 통해 지상의 RTSP 서버에 실시간으로 전송하는 드론 및 해당 서버에 접속해 영상 속 사람을 인식하는 프로그램을 실행하는 클라이언트로 구성된 시스템에 관한 특허
    • 등록번호 10-1594428 “드론을 이용한 보안 서비스 제공 방법 및 시스템” (등록일자 2016년 02월 05일) : 기업 출원 특허 (엘지유플러스)
      • 특정 대상과 일정 거리를 유지하며 비행중인 드론이 촬영한 영상 및 여러 센서를 통해 수집한 정보를 분석하고, 어떠한 이벤트가 발생하면 통신망을 통해 다른 제2단말로 이벤트 발생 사실을 전송하는 시스템에 관한 특허
    • 공개번호 10-2018-0065331 “영상 인식을 이용한 드론 제어 방법 및 그 장치” (공개일자 2018년 06월 18일) : 기업 출원 특허 (케이티)
      • 드론에서 송출한 영상을 수신해 해당 영역을 탐색하기 위한 신호를 드론으로 다시 보내며, 영상 속 미리 결정된 객체를 탐색하고 특정 객체가 선택되었을 때 해당 객체를 지속적으로 추적하기 위한 신호를 드론으로 송신하는 드론 제어 시스템에 관한 특허
    • 등록번호 10-1797006 “드론을 이용한 토지 조사 시스템 및 방법” (등록일자 2017년 11월 07일) : 기관 출원 특허 (한국자산관리공사)
      • 드론을 이용해 토지에 대한 영상을 수집하는 촬영부 및 해당 영상을 분석해 조사 대상 토지 현황을 파악하고, 토지 현황에 대한 정보를 사용자에게 제공하는 관리부를 포함하는 토지 조사 시스템 및 방법에 관한 특허
    • 등록번호 10-1614654 “단일 카메라가 장착된 드론을 이용한 추적 객체 위치 판별 방법” (등록일자 2016년 04월 15일) : 산학협력단 출원 특허 (동의대학교)
      • 드론에 장착된 단일 카메라로 촬영된 이미지 화면상에 표시되는 객체가 드론으로부터 실제로 떨어진 거리를 측정할 수 있는 추적 객체 위치 판별 방법에 관한 특허
    • 등록번호 10-1804184 “드론을 이용한 연안지형 조사장치” (등록일자 2017년 11월 28일) : 기관 출원 특허 (한국해양과학기술원)
      • 본체 및 드론 주위의 장애물을 감지하는 장애물감지센서, 지형관련 위치정보를 획득하는 위치측정부, 해당 정보를 처리하는 정보처리부 등을 가지고 사전에 계획된 경로를 따라 이동하되 심한 경사나 굴곡과 같은 장애물을 감지하면 회피기동하며 지형관련 위치정보를 자동으로 획득하는 드론 시스템에 관한 특허
    • 등록번호 10-1827363 “드론의 지상물체 추적 제어 시스템” (등록일자 2018년 02월 02일) : 산학협력단 출원 특허 (강원대학교)
      • 드론에 구비된 카메라를 통해 지상 물체를 촬영하고, 촬영된 영상을 분할해 지상의 물체를 인식하고 인식된 방향으로 해당 물체를 자동 추적하거나 촬영하도록 드론의 모터를 구동하는 추적 제어 시스템에 관한 특허
    • 등록번호 09678506 “Magic wand interface and other user interaction paradigms for a fiying digital assistant” ([미국] Skydio, Inc.)
      • 특허 내에서 PMD(Portable Multifunction Device)라고 칭하는 스마트폰이나 원격 디바이스와, FDA(Flying Digital Assistant)라고 칭하는 드론 간의 상호 통신, RF신호 / 관성측정 / 컴퓨터 비전 등을 종합적으로 이용한 로컬라이제이션 / 네비게이션, “Magic wand interface” 라고 칭하는 FDA 조종 방식을 종합적으로 포함한 특허
    • 등록번호 09586682 “Unmaned aerial vehicle control apparatus and method” ([미국], LG Electronics, Inc.)
      • 스마트폰의 “페어링 앱”을 통한 UAV의 제어와, UAV로부터 비행경로, 사진, 동영상 등 피드백을 수신하는 방법에 관한 특허. 이전의 공개 특허인 “10-2014-0052081 무인 항공기 제어 장치 및 방법 ([한국] 엘지전자 주식회사)” 의 내용을 통합해 미국에서 출원한 특허임.
    • 그 외의 특허 : 사용자 인증 및 맞춤식의 UAV 선택과 UAV 플랫폼 서비스(버라이즌), 안전한 배송을 휘한 구매자-물품-UAV의 인증‧확인 시스템(퀄컴) 등
    • 위와 같은 여러 드론 관련 특허들이 등록되어 있다. 위 특허들의 공통점으로 드론 주위의 상황을 인식할 수 있는 시스템을 가지고 있다는 것을 들 수 있다. 또한 ‘시장 현황 조사’ 문단의 끝에서 밝힌 바와 마찬가지로, 2015년 이후 출원된 특허가 다수 있음을 확인할 수 있었다. 특히 벤처 기업 뿐 아니라 연구기관 또는 KT, LG U+와 같은 대기업에서도 관련 특허를 등록했음에 주목할 필요가 있을 것이다.
  • 특허전략
    • 현재 드론 시장에서 주요시장 확보율(미국, 일본, 중국, 유럽 중 3개국 이상에 동시 출원된 특허 비율)이 가장 큰 국가는 중국이며, 75.7%의 시장을 확보하고 있다. 또한, 중국은 기술영향력(특허가 후속 연구에 사용되는 정도)에서도 선도 국가이다. 한국의 경우 드론 시장 자체는 중국 대비 거의 확보하지 못하고 있으며, 기술영향력에서는 중국의 2/3 정도인 것으로 분석된다.
    • 국제 특허 출원 건수 기준으로 분석할 때, 드론 분야 특허 중에서 상위 10개 출원 주체가 출원한 특허가 차지하는 비율은 1.0%로, 항공 분야 중 고정익 항공기 분야(상위 10개 출원 주체가 10.7% 차지)나 항공 공통 기술 분야(23.2%)에 비해 특허 독점 경향은 특히 낮다. 드론 분야에서 특허를 가장 많이 출원한 주체는 미국의 보잉(Boeing) 사이다.
    • 한국의 경우도 마찬가지로, 드론 분야는 다른 항공 분야에 비해 상위 10개 출원인이 전체 특허 출원을 주도하는 경향은 특히 낮다(0.4%). 특허를 가장 많이 출원한 주체는 한국항공우주연구원이다.
    • 또한, 상위 10개 출원인 중 대부분이 연구기관이며 기업에서는 LG전자가 상위에 위치했다.
    • 5개년 구간으로 나누어 볼 때, 과거 5년(2006~2010) 대비 최근 5년(2011~2015) 드론 분야 특허 출원 건수는 137.7% 증가했다.
    • 위 사항을 종합해 볼 때, 드론 분야는 아직 기술력이 성숙한 몇몇 기업이 주도적으로 특허 출원을 이끈다기보다는 신생 기업이나 연구기관 등 다양한 특허 출원 주체가 동시에 새로운 분야에 진입하고 있는 모습이라고 할 수 있다. 특히 지난 5년간 특허 출원 건수가 큰 폭으로 증가한 점으로 미루어 볼 때, 이 프로젝트의 결과물이 추후 특허 시장에서 가치를 창출할 가능성도 충분히 있다.

시장상황에 대한 분석

  • 경쟁제품 조사 비교
    • CNSI(씨엔에스아이)
      • 중소벤처기업 : 드론을 이용한 영상관제솔루션 보유. LTE 망을 이용해 드론에서 촬영된 영상을 관제서버로 실시간으로 전송해 모바일/데스크톱 환경에서 조종자가 현장을 관제할 수 있음. 영상에 대한 별도의 실시간 처리는 지원하지 않는 것으로 보이며, 녹화 기능 정도만 지원하고 있음. 그러나 드론과는 별개로 회사가 ‘AI 스마트 게이지 센서’ 솔루션(아날로그 계기판을 카메라로 촬영해 디지털 데이터로 변환)을 보유하고 있는 것으로 보아, 드론 영상에도 측량 데이터 추출 등의 가공을 할 수 있는 기술력은 있다고 판단됨.
    • 자이언트드론
      • 중소벤처기업 : 드론 판매 및 드론측량 대행 업무 수행 업체. 자체적인 드론 측량 소프트웨어를 보유하고 있는 것은 아니며, 타사의 드론과 SW의 패키지 판매와 사용자 교육, 측량업무 대행 등을 주로 하고 있음. 측량 소프트웨어(3D Survey) 또한 실시간 영상 분석은 아니며 촬영된 사진을 바탕으로 후처리하는 방식임. 드론의 측량에 관한 기술보다도, 이 기업에서는 수소연료전지 배터리를 활용한 드론의 장기 체공을 주 기술로 내세우고 있음. 기존 리튬이온전지 배터리를 장착한 드론의 체공 시간이 30분 미만으로 짧은 것을 생각해 볼 때, 1~2시간까지 체공이 가능한 수소전지 드론은 본격적인 대규모 측량 작업에 유용하게 쓰일 수 있음.
    • 공간정보
      • 중소기업 : 드론 측량 전문 기업. 위와 마찬가지로 자체적인 드론 측량 HW/SW를 보유하고 있는 것은 아니지만, 다수의 기관(국토교통과학기술진흥원 등)의 연구과제를 수주한 경력이 있으며 지리정보시스템 관련 특허도 다량 보유하고 있음.
      • 주요 연구 과제
        • 중소기업청 발주 “다중센서 장착을 통한 UAV용 다차원 공간정보 제작 모듈 개발”
        • 중소기업청 발주 “드론기반 공간정보를 활용한 농업재해보험업무용 기초자료조사 공정개선”
        • 국토교통과학기술진흥원 “드론을 활용한 비탈면 및 도로포장 관리 효율화 기술 개발” 등
      • 위 기업 외에도 드론을 이용한 측량 / 지리정보시스템 관련 연구를 진행중인 기업이 다수 있으며, 특히 2015년부터 측량 특허 출원량이 크게 증가했다. 또한 기업 뿐만 아니라 한국해양과학기술원, 한국전자통신연구원 등 공공연구기관에서도 특허 출원이 다수 있었다. 또한 전통적인 지적정보 측량에만 국한되지 않고 기상상태와 같은 다른 정보를 수집하는 시도 또한 있었다(2017년 특허출원 제164507호 ‘모바일 라이더를 이용하는 기상관측방법 및 기상관측장치’, 한국전자통신연구원).
  • 마케팅 전략 제시
    • 드론 측량 관련 사업을 하는 기업이 늘어나고, 측량 소프트웨어도 다수 사용되고 있지만 거의 모두 저장된 이미지를 후처리하는 방식으로 정밀 지도 제작 등의 작업에는 적합하지만 드론이 현재 비행 및 촬영 중인 지역에 한해서만 필요한 기하학적 정보(특정 개체의 길이, 넓이 등)를 실시간으로 제공하는 기능은 없다.
    • 또한, 전문적인 측량 소프트웨어는 사용자의 교육이 많이 필요할 뿐만이 아니라 대부분 고가이다. 예를 들어, 항공 이미지를 이용한 지적정보 소프트웨어인 3D survey는 가격이 몇백만 원대이다. 단순히 촬영 중인 영상에서 객체 몇 가지만 추출해 정보를 측정하고자 하는, 일반 드론 조종자의 입장에서는 이렇게 고가이며 복잡한 소프트웨어가 필요하지 않다.
    • 따라서, 이 프로젝트의 장점이자 마케팅 전략으로는 초보 사용자나 복잡한 기능이 필요 없는 사용자에게 단순하면서도 핵심적인 기능만 제공하는 편리한 UI/UX를 들 수 있을 것이다. 대부분의 대상 소비자는 전문적인 측량 기술자가 아닌 드론에서 촬영되는 실시간 영상 내 사물의 간단한 측량만을 원하는 조종자가 될 것이다.
    • 반대로, 전문적인 수치 모델 계산이 필요한 측량 기술자에게는 이 프로젝트를 실제 측량에 앞서 미리 간이 측정을 해 보는 기능으로 응용할 수 있다는 점을 장점으로 내세울 수 있다. 이 프로젝트의 연산량은 그렇게 크지 않기 때문에, 추후 모바일 환경으로도 쉽게 전환할 수 있을 것이다. 전문 소프트웨어가 아직 성능상의 문제로 PC에서 구동되어야 한다는 점을 생각해 볼 때, 이는 실제 작업 이전에 현장에서 모바일 기기를 이용한 예비 작업에 쓰일 수 있는 장점이 있다.

개발과제의 기대효과

기술적 기대효과

  • 검증된 오픈 소스 소프트웨어로부터 결과물을 제작함에 따라, 클로즈드 소스로 개발되는 제어 소프트웨어의 사용으로 발생할 수 있는 여러 가지 위험을 피할 수 있다. 예를 들어 중국산 드론 소프트웨어에서 발생한 백도어 논란 등으로부터 자유로울 수 있다.
  • 해외 지도 서비스를 이용한 드론 UI/UX 에서 제공할 수 없는 여러 가지 특화된 기능을 제공할 수 있다. VWorld와 같은 경우 국토교통부에서 제공하는 지도 자료이기 떄문에 Google Maps와 같은 해외 서비스에서 제공하기 어려운 지적도 정보 등을 드론에서 얻을 수 있는 영상 정보 등과 결합하기에 용이하다.
  • 위에 덧붙여, 촬영된 영상으로부터 측량 정보를 얻어 실제 현황과 기존 지적도의 일치 여부를 검증하는 등의 작업에 사용할 수 있을 것이다.

경제적, 사회적 기대 및 파급효과

  • 드론이 군사 목적 등에 한해 쓰이던 “무인 비행체” 에서 지금과 같이 일반인의 취미로 인기를 끌게 된 이유에는 중국산 등 저가 드론의 확산과 함께, 이러한 드론이 스마트폰 앱 등 기존 전용 조종기보다 편리한 인터페이스를 제공했다는 점도 있다.
  • 또한, 이제는 취미를 넘어 드론을 이용한 측량, 농업에의 이용, 전문 영상 촬영 등 여러 분야에서도 드론은 유용하게 쓰이고 있다. 그러나 아직 이러한 분야는 일반인에게는 생소하게 여겨질 수 있다. 이러한 작업에는 전문 SW를 이용해 별도의 후처리를 거쳐야 하거나, 비행 설정 등에 있어 사전 지식이 많이 필요한 것이 현실이다.
  • 따라서 기존의 취미로 사용할 수 있을 정도의 드론 조종 UI/UX 를 넘어, 일반인도 실시간 간이 측량이나 센서 정보 결합 등의 기능을 쉽게 적용할 수 있는 인터페이스를 개발한다면 드론의 유용성이 보다 널리 인식될 수 있을 것이며, 드론이 단순한 취미를 넘어 일상생활에서 필요한 용도로도 자주 쓰이는 모습을 볼 수 있을 것이다.

기술개발 일정 및 추진체계

개발 일정

2019-2-5조-개발일정.JPG

구성원 및 추진체계

  • 9월
    • 프로젝트 관련 자료 및 오픈소스 조사 – 구체적으로 어떤 프레임워크/라이브러리를 사용할 것인지와 어느 환경을 대상으로 개발할 것인지에 대해 정하며 기존 기술에 대해 확인한다.
    • 산학협력 업체 연락 및 토의 – 이 프로젝트의 협력 업체와 연락해 장비 지원 등에 관해 협력 사항을 토의한다.
  • 10 ~ 12월
    • 실제 개발 – 실제로 프로젝트의 개발에 착수하며, 실내/외 등 다양한 환경에서 개발중인 프로그램의 성능이 어떠한지 실험한다.
  • 12월
    • 최종 발표 – 완성된 프로젝트의 성능을 최종 평가하고 시연한다.
  • 구성원
    • 프로젝트 매니저(김*우)
    • 기술/개발 담당(임*일)
    • 시험/평가 담당(박*수)

설계

설계사양

제품의 요구사항

2019-2-5조-요구사항1.JPG

  1. QGroundControl의 한국어 인터페이스 제공 : 현재 QGroundControl의 인터페이스가 번역되지 않아 영어로만 제공된다. 따라서 한국어 인터페이스를 제공할 수 있도록 텍스트를 번역하고 UI에 통합한다. QGroundControl은 Qt 기반이므로 다국어 지원이 가능하다. 또한, Github의 QGroundControl 프로젝트 내에 일부 UI가 한국어로 번역된 결과물이 이미 업로드되어 있다. 이를 이용하면 좀 더 빨리 번역을 완료할 수 있을 것이다.
  2. QGroundControl 내 VWorld 지도 통합 : 현재 QGroundControl에는 VWorld 지도가 통합되어 있다. 이 기능이 정상 동작하는지 점검하고, 추후 VWorld API 주소의 변경을 대비해 지금 사용중인 비공식 URL 대신 공식 API URL로 교체한다. 또한, 단순한 지도 외에 추가적인 정보(맵 마커 등)를 지도상에 표시할 수 있는지 검토한다.
  3. 수신된 영상의 실시간 처리 : 드론의 센서나 카메라로부터 전송되는 정보를 실시간으로 처리할 수 있도록 한다. 이 프로젝트에서는 별도의 센서가 없이 카메라 영상만을 사용하므로, 수신 영상을 실시간으로 처리해 주위 환경에 대한 정보를 얻도록 한다. 예를 들어, 영상에 나타나는 물체의 기하학적인 정보(길이, 면적 등)를 처리부에서 계산한다.
  4. 처리된 영상을 QGroundControl에 출력 : 위에서 처리된 영상을 QGroundControl에 출력한다. 자체적으로 RTP, RTSP 등의 프로토콜을 지원하므로 처리된 영상을 GStreamer등의 트랜스코더를 이용해 해당 프로토콜로 전송할 수 있다면 충분히 가능하다.
  5. 영상으로부터 얻은 정보를 지도와 통합 : 영상에서 얻은 정보를 지도에 실시간으로 덧붙여 출력한다. 예를 들어, 지도상에는 건물과 같은 드론 비행 시의 장애물이 없지만 실제로 촬영된 영상에는 장애물이 있다면, 지도 위에 해당 장애물의 위치와 그에 대한 정보(크기, 촬영된 이미지 등)를 추가로 표시할 수 있다.
  6. 영상 처리부의 모듈화 (여러 처리 기능 지원) : 영상 처리부를 모듈화해 사용자의 필요에 따라 다른 처리 기능을 쉽게 적용할 수 있도록 한다. 예를 들어 카메라 영상으로부터 기하학적인 정보를 추출할 수도 있지만, 동일한 영상으로부터 안면 인식이나 움직이는 물체 인식을 할 수도 있을 것이다. 또는 열화상 카메라와 같은 추가적인 센서가 드론에 부착되었다면, 일반 영상과 열화상 영상을 동시에 비교 및 처리할 수도 있을 것이다. 이러한 기능을 각각 모듈화해 사용자가 쉽게 바꿔 적용할 수 있도록 한다.
  7. UI/UX의 편의성, 신속성, 효율성: UI/UX 가이드라인에 따라 사용자가 편리하게 쓸 수 있는 인터페이스를 개발한다. 구체적인 가이드라인의 내용과 평가 항목은 아래 사용자 요구사항 만족을 위한 기능별 목표에 서술한다.

사용자 요구사항 만족을 위한 기능별 목표

2019-2-5조-요구사항2.JPG

  • 프로젝트에서 달성해야 할 요구사항(목적)을 정리한 것이다. 아래 기능적 요구사항은 프로젝트 결과물이 갖추어야 할 기능들을 명시한 것이다. 위의 비기능적 요구사항은 사용자가 얼마나 편리하게 사용할 수 있는지를 평가할 수 있는 기준들을 나타내었다.
  • 아래 기능적 요구 사항의 경우는 위에서 설명한 내용과 같다. 이러한 기능적 요구 사항은 해당 기능이 구현되었는지 아닌지의 여부를 통해 평가할 것이다.
  • 위의 비기능적 요구 사항의 경우, UI/UX 가이드라인의 내용을 따랐다. 처리 속도, 메모리 요구량 등 정량적으로 판단할 수 있는 사항이 아니기 때문에, 평가할 때에는 완성품이 만족해야 하는 구체적인 사항을 체크리스트 형식으로 작성해 예/아니오 문항을 통해 평가할 것이다. 구체적인 예시는 아래 평가 내용 예시에 나와 있다.

평가 내용 예시

  • 기능적 요구 사항
    • 각 기능을 구현했는지 여부로 평가한다.
  • 비기능적 요구 사항
    • 시스템 상태의 가시성
      • 처리되는 영상에서 얻어지는 정보를 시각적으로 표시하는지?
        • 예) 얼굴 인식의 경우 얼굴 주위에 경계 사각형(bounding box) 출력
        • 예) 길이 측정의 경우 인식된 물체에 길이 방향 선분 표시
      • 영상 처리 속도 등을 시각적으로 표시하는지?
        • 예) fps(frames per second) 값을 표시하고 처리가 느려질 경우 fps 값이 내려감
        • 예) 네트워크 레이턴시(latency)를 표시, 드론과의 ping 값을 표시
    • 시스템과 현실 세계의 일치
      • 사용자에게 보이는 아이콘이나 용어 등이 현실 세계에서 쓰는 것과 일치하는지?
        • 예) 측량 응용의 경우 측량 용어를 사용
        • 예) 기하학 측정의 경우 측정 단위가 픽셀이 아닌 미터 단위
    • 사용자의 조작과 자유
      • 사용자가 언제든지 영상 처리를 중지하거나 다시 시작할 수 있는지?
        • 예) 영상 스트리밍 도중에 처리 모듈을 중지하거나 시작해도 문제가 없어야 함
      • 영상 처리 결과를 저장하거나 불러올 수 있는지?
      • 처리 모듈의 사용 여부가 기존의 드론 조작에 영향을 미치지 않는지?
        • 예) 시스템 자원을 너무 과도하게 사용해 속칭 “렉”이 걸리지 않아야 함
    • 일관성과 표준
      • 다른 프로그램과 공통으로 가지는 기능을 별개의 이름으로 부르지 않는지?
        • 예) “스트리밍”, “저장하기” 등의 의미가 흔히 통용되는 의미와 동일할 것
      • 동일한 개념을 메뉴나 화면마다 다른 이름으로 부르지 않는지?
        • 예) “처리 모듈”을 도움말에서는 “영상 필터”, 환경설정에서는 “플러그인” 등으로 부르는 일이 없어야 함
    • 오류 방지
      • 사용자 부주의로 발생할 수 있는 실수를 충분히 방지했는지?
        • 예) 적외선 카메라가 장착되지 않은 드론은 열화상 분석 처리 모듈을 활성화할 수 없고 경고 메시지를 출력
        • 예) 저장된 영상을 지우기 전에 경고 메시지 출력
    • 기억보다 인식
      • 단순히 텍스트로만 정보를 표시하지 않고 이미지 등으로 사용자가 알아보기 쉽게 했는지?
        • 예) 저장된 영상의 썸네일 출력
        • 예) 처리 모듈이 하는 기능을 예시 이미지/영상을 통해 보여줌. 예를 들어 안면 인식 모듈의 경우 드론에 촬영된 사람 얼굴에 바운딩 박스가 실시간으로 생성되는 모습을 예시로 제공
    • 유연성과 사용의 효율성
      • 사용자가 인터페이스와 상호작용하는 단계가 최소화되었는지?
        • 예) 자주 쓰는 처리 모듈과 설정은 “프리셋” 등으로 저장 가능
      • 사용자가 인터페이스를 자신의 편의에 맞게 배치할 수 있는지?
        • 예) 출력되는 영상의 위치를 모니터 내 어디든지 배치 가능(메인 윈도우와 독립적으로)
    • 미학적이고 최소주의적 디자인
      • 도구 모음 등에 불필요한 텍스트가 출력되지 않는지?
        • 예) 기능을 아이콘으로 표시하고 설명은 툴팁 상자 등으로 제공
        • 예) 각 메뉴의 글자 수를 최대 10글자 이내로 제한
    • 유저가 오류를 인식, 진단하고 복구할 수 있도록 돕기
      • 오류가 발생했을 때 사용자가 해결할 수 있는 방안을 오류 메시지와 함께 제공하는지?
        • 예) 스트리밍이 갑자기 중단되었을 때, 드론의 위치나 통신망 상태를 확인하라는 조언 표시 및 윈도우즈 네트워크 설정 바로가기 메뉴를 제공
      • 오류의 해결을 위한 도움말에 그림으로 된 설명이 충분한지?
        • 예) 드론과의 통신이 가능한 거리를 반지름이 나타난 원으로 지도상에 표시
    • 도움말과 문서화
      • 사용자용 도움말은 충실한지?
        • 예) 모든 메뉴별로 도움말이 제공되며 구체적인 사용 사례 등도 같이 설명
        • 예) 전문적인 용어(예 : RTSP 프로토콜) 에 대한 설명이 충실해야 함
      • 개발자를 위한 문서화는 충실한지?
        • 예) 제3자가 영상 처리 모듈을 다른 부분과 독립적으로 개발할 수 있을 정도로 문서화

개념설계안

2019-2-5조-개념설계도.JPG

  • 개념설계안 1
    • 위 과정의 중간에 있는 “처리 모듈”을 선택하는 부분을 QGroundControl의 메뉴에 통합시킨 후 사용자가 실시간으로 변경할 수 있도록 한다. 영상 출력은 기존 QGroundControl의 인터페이스를 그대로 이용하고, 내용만 처리된 영상으로 변경한다. 사용자의 선택권을 최대한 보장하는 방안이다.
  • 개념설계안 2
    • 위 과정의 중간에 있는 “처리 모듈”을 선택하는 부분을 프로그램 배포 시점에 고정시키고, 사용자는 여러 가지 배포본 중 하나만을 선택할 수 있도록 한다. 이렇게 하는 경우 하나의 응용 분야만을 다루는 사용자가 환경 설정에 고민할 필요 없이 초기 출하 시 설정된 최적값 그대로 사용하면 된다는 장점이 있으나, 다른 응용을 원할 때는 (예를 들어 단순 측량 -> 얼굴 인식 등) 새로 패키지를 설치해야 할 것이다. 개발자 입장에서는 여러 모듈을 전부 테스트하지 않아도 되므로 개발할 때 고려해야 할 사항이 줄어든다.
  • 개념설계안 3
    • 중간의 “처리 모듈”을 전체 패키지에 포함하는 것이 아닌 별도의 서버로 구성하고, 클라이언트(QGroundControl)에는 서버로부터 처리된 결과만을 전송한다. 사용자에게는 서버에 접근할 수 있는 API Key와 권한을 부여한다. 이 방식의 장점으로는 연산 성능이 많이 필요한 처리의 경우에도(예를 들어 초고해상도 영상 처리) 클라이언트 측의 사양과 관계없이 사용할 수 있다는 점과, 사용자에게 솔루션을 유료로 판매할 때 “종량제” 판매가 가능해진다는 점을 들 수 있다. 또한 모듈의 업그레이드가 중앙 집중식으로 이루어지므로 사용자는 항상 최신 처리 알고리즘을 사용한다는 것을 보장할 수 있다. 반면, 처리 결과의 전송이 네트워크를 거치므로 클라이언트에서 직접 처리하는 방식에 비해 필연적으로 지연이 생길 수밖에 없고, 사용자가 영상을 제공자에게 위탁하기를 원하지 않는 경우(민감한 시설 등) 사용이 힘들 수 있다는 단점이 있다.

위 내용과 다른 사항을 표로 정리하면 다음과 같다.

2019-2-5조-개념설계비교표.JPG

이 프로젝트에 제공되는 드론은 별도의 센서가 없이 카메라만 있으므로 여러 가지 센서를 활용한 모듈을 개발하기 어렵다. 또한, 서버-클라이언트 구성의 경우 별도의 네트워크 구성 등 비용과 난이도 측면에서 개발 기간을 초과할 수 있다. 따라서 이 프로젝트에서는 설계안 2를 선택했다. 만약 예산과 시간이 더 많았다면, 설계안 1이나 설계안 3도 나쁘지 않은 선택이 될 수 있었을 것이다.

이론적 배경 (키워드 요약)

  • SLAM(Simultaneous Localization and Mapping)
  • 칼만 필터(Kalman filter)
  • PID 제어
  • MPEG 영상/음성 표준
    • MPEG-4 Part 10 Advanced Video Coding(AVC)
    • MPEG-H Part 2 High Efficiency Video Coding(HEVC)
    • Dynamic Adaptive Streaming over HTTP
    • Common Media Application Format
    • Omnidirectional Media Format

관련 Open-Source

  • OpenCV
    • 실시간 컴퓨터 비전용 라이브러리
    • C/C++로 개발되었으며 파이썬, 자바, 매트랩 등 언어에 바인딩 제공
    • 응용 분야 : 물체 인식, 안면 인식, 컬러 트랙킹 등
    • 2500개 이상의 최적화된 알고리즘 제공
    • 이번 과제에서 카메라 영상으로부터 주위 환경을 인식할 때 사용 가능함
  • Qt
    • 크로스 플랫폼 프레임워크
    • 오픈 소스 라이선스(GPL) 외 상용 버전 라이선스 별도 판매
    • 초창기에는 GUI 라이브러리가 주 목적이었지만 지금은 SQL 접근, XML 처리, 스레드 관리 등 종합 프레임워크로 발전함
    • 순수 GUI 개발만을 위해 네트워크와 데이터베이스 부분을 제외한 GUI 프레임워크 제공
    • 리눅스, 윈도우, 임베디드 시스템, 안드로이드 등 멀티 플랫폼 지원
    • C++로 개발되었으며 파이썬 등 다른 언어로의 바인딩 제공
    • 이번 과제에서 UI/UX 구현에 사용 가능함
  • FFmpeg
    • 각종 비디오/오디오 포맷을 처리하기 위한 오픈 소스 프로젝트
    • 코덱 라이브러리, 컨테이너 MUX/DeMUX 라이브러리 등이 포함되어 있으며 ffmepg이나 ffplay와 같은 커맨드라인 인터페이스 제공
    • 2000년에 처음 발표된 이후 지금까지 지속적으로 개발되고 있음
    • 현존하는 대부분의 미디어 포맷을 지원하며, 여러 운영체제에서 사용가능
    • 대부분의 동영상 플레이어 / 인코더가 FFmpeg을 사용 중
    • 또한, OpenCV의 동영상 처리 부분에서도 FFmpeg 라이브러리를 이용함(라이선스 문제로 FFmpeg의 일부분만 이용하거나 설정에 따라 제외될 수 있음)
  • QGroundControl
    • ArduPilot과 PX4 Pro를 기반으로 하는 드론을 설정하고, 자동 비행 설정과 지도 표시 및 비디오 스트리밍 기능 등을 지원하는 GCS(Ground Control Station)
    • Windows, Linux, Android 등 다양한 플랫폼을 지원하며, 인터페이스 자체는 Qt QML을 이용하여 구현
    • MAVLink 프로토콜을 이용하는 드론은 QGroundControl을 이용해 제어할 수 있으며, 구체적인 드론의 구동 방식(고정익, 멀티로터 등)에 구애받지 않고 사용할 수 있음
    • 프로젝트 협력 업체에서는 현재 QGroundControl을 이용해 프로젝트를 진행하고 있으며, 업체의 드론에 맞는 커스터마이제이션(customization)과 지도 API를 아래 설명할 VWorld로 교체하는 작업을 진행하고 있음
  • VLC
    • 멀티미디어 파일과 프로토콜을 재생할 수 있는 오픈 소스 크로스 플랫폼 프로젝트
    • 일반 사용자들을 위해 만들어진 VLC Media Player가 가장 유명하지만, 전문 사용자나 개발자들을 위한 다른 프레임워크 또한 프로젝트에 포함되어 있음
      • 일반 사용자용 : VLC Media Player(플레이어), VLMC(영상 편집기)
      • 전문 사용자용 : DVBlast(MPEG-2/TS 디먹서 및 스트리머), x264(AVC 인코더), multicat(스트리밍 툴)
      • 개발자용 : libVLC, biTStream, dav1d, libdvdcss, libacss, libbdplus, libdvdnav, libbluray, libdvbcsa, libdvdread, libdvbpsi, libdca (이상 미디어 스트리밍, 처리 라이브러리), libcloudstorage(클라우드 서비스 접근 라이브러리), VLMa(디지털 방송 수신 라이브러리)
  • VWorld
    • 국토교통부에서 제공하는 공간정보 오픈플랫폼
    • 2010년 처음 운영을 시작해 지금까지 이어지고 있음
    • 현재 대한민국 전역의 2차원과 3차원 지도를 25~50cm의 해상도로 제공하고 있으며, 행정정보나 지적도와 관련된 정보도 제공
    • Google Maps API와 유사하게 OpenAPI를 제공하고 있으며 이를 이용해 다른 서비스의 개발에 활용할 수 있음
    • 국내에서 제공되는 서비스이니만큼, 해외 지도 서비스를 이용함으로 발생하는 여러 가지 문제를 해결할 수 있음

상세설계 내용

요구사항-UI-유즈케이스 Mapping

2019-2-5조-UI매핑.JPG


UI 개요

2019-2-5조-UI개요.JPG


메뉴 구성

2019-2-5조-메뉴구성.JPG


Flow Chart

  • 프로그램 최초 실행시 드론과의 연결 설정과 처리 모듈 설정 화면을 표시한다.
  • 이후 과정으로 진행하기 이전에 드론과의 연결 상태를 점검하고, 실패했다면 사용자에게 경고 메시지와 함께 추정되는 연결 불가 이유를 알린다(예를 들어, 윈도우즈 네트워크 설정이 꺼져 있음 또는 연결은 되었으나 ping 레이턴시가 너무 높음 등). 사용자는 이 메시지를 읽고 문제를 해결하거나, 또는 무시하고 진행할 수 있다.
  • 영상 표시 화면과 지도 표시 화면은 실행 도중에 자유롭게 전환 가능하다.
  • 영상 표시 화면에서는 현재 영상을 그림 파일 또는 영상 파일로 저장할 수 있다. 저장한 이후에는 다시 영상 표시 화면으로 복귀한다.
  • 영상/지도 표시 화면에서 설정 화면으로 넘어갈 수 있다. 설정 화면에서는 처리 모듈 설정을 제외한 나머지 항목의 변경이 가능하다.

2019-2-5조-FlowChart.JPG


유즈케이스 다이어그램

2019-2-5조-UseCaseDiagram.JPG


유즈케이스 설명

2019-2-5조-UseCase1.JPG

2019-2-5조-UseCase2.JPG

2019-2-5조-UseCase3.JPG

2019-2-5조-UseCase4.JPG

2019-2-5조-UseCase5.JPG

결과 및 평가

완료 작품의 소개

프로토타입 사진 혹은 작동 장면

초기 로딩 화면 : 네트워크 설정

2019-2-5조-LoadingScreen1.JPG

  • 드론과의 연결을 위해 드론의 IP / Port 를 설정하고, 연결 테스트를 한다. 테스트 시도 중에는 진행 상태바가 계속 돌아가며, 테스트 버튼을 다시 눌러 중지할 수 있다.
  • 교실 시연 환경에서는 네트워크 구성 등의 관계 상 드론과의 연결을 할 수 없으므로, 기타 설정에서 ‘데모 모드’ 를 설정하고 진행한다.
초기 로딩 화면 : 처리모듈 설정

2019-2-5조-LoadingScreen2.JPG

  • 영상 처리 모듈에 대한 여러 가지 변수를 설정한다. 여기서는 화면 내의 경계를 인식해 해당 부분의 넓이를 계산하는 간단한 측량 모듈에 대한 설정값이다.
    • 코덱 : H.264 TS, H.265 중 선택 – 사실 OpenCV에서 자동으로 판단하기 때문에, 이 옵션은 추후 제거되거나 다른 곳(고급 환경 설정 등)으로 이동될 수 있다.
    • 처리 민감도 : 최상 ~ 최하 선택 – 화면 상 경계 검출의 민감도를 설정한다.
    • 영상 스케일링 : 0.1 ~ 2.0 – 드론에서 전송되는 영상을 몇 배 확대해서 처리할지 설정한다. 대부분의 경우는 기본값인 1배로 충분할 것이다.
    • 필터 : 추가 블러 처리, 중앙값 블러 사용 – 경계 검출 이전 전처리 단계에서 사용할 과정이다. 영상 특성에 따라 사용자가 선택할 수 있도록 했다.
초기 로딩 화면 : 기타 설정

2019-2-5조-LoadingScreen3.JPG

  • 프로그램의 실행과 관련된 기타 설정을 위한 부분이다.
    • 디버그 로그 : 드론과의 연결이 불량하거나, 프로그램 중간에 실행이 종료되는 등 문제가 발생할 시 추후 분석을 위해 로그를 남긴다. 대부분의 사용자에게는 필요 없으나 일부 특이한 실행 환경을 사용하는 사람을 위한 옵션이다.
    • 데모 모드 : 교실에서의 시연을 위한 옵션이다. 시연할 때 실제 드론의 비행과 영상 전송은 비행 공간, 네트워크 구성, 드론 규제 법률 등의 이유로 불가능하므로 이 기능을 사용한다. 사용하면 사전에 저장된 영상과 GPS 좌표를 이용해 마치 실제 드론을 사용하는 것과 같이 시뮬레이션한다.
    • 실행 버튼 : 위 3개 화면에서 설정된 옵션을 이용해 아래 지도 표시 / 영상 표시 화면으로 이동한다.
지도 표시

2019-2-5조-MapScreenFinal.JPG

  • 드론이 비행중인 장소의 위치를 드론 아이콘(마커)로 표시하고, 위도/경도와 지명을 추가로 표시한다.
  • 현재 구현상의 문제로 VWorld 지도 대신 다른 오픈 소스 지도 서비스인 OpenStreetMap을 사용하고 있으며, 지도 제공자는 추후 수정될 수 있다.
영상 표시

2019-2-5조-VideoScreenFinal.JPG

  • 드론이 비행 중 촬영한 영상을 수신하여 처리하고 결과를 표시한다. 구체적으로는, 영상 내의 경계를 추출해 해당 지역에 대한 기하적인 정보를 추출하고 표시한다. 아직 기하적인 정보를 추가로 영상에 표시하고 있지 않은데, 추후 처리 과정에 추가될 수 있을 것이다.
  • 위 예시 화면에서는 우측 하단 검은색으로 덮힌 영역을 근사적으로 추출했다. 어느 정도 정확하게 추출하지만, 이 역시 좀 더 보완이 필요할 것으로 보인다. 예를 들어, 색이 명확하게 구분할 수 없는 경우에는 경계 추출이 잘 동작하지 않는다. (HSV 색 공간에서 H값 이용 분리)

관련사업비 내역서

2019-2-5조-사업비내역.JPG

완료작품의 평가

2019-2-5조-완료작품평가.JPG

향후평가

어려웠던 내용들

  • Qt Framework를 쓴 경험이 거의 없는 상태에서 시작했기 때문에, 밑바닥부터 새로 공부하는 느낌으로 구현해야 했다. 특히 OpenCV의 출력과 연계하는 부분에서 많은 시행착오가 있었다. 데이터 형식을 서로 변환하는 문제에서부터(cv::Mat -> QImage), QML 요소로 표시하는 인터페이스를 만들기까지 여러 번 실패한 이후에야 불완전하게나마 완성할 수 있었다.
  • 특히 위 과정에서 서로 다른 모듈을 연계할 때 이벤트 핸들링 부분을 매끄럽게 다루는 데 애를 먹었다. Qt Framework에서 기본으로 지원되는 이벤트 종류가 많다는 사실만 믿은 채로 자세히 알아보지 않고 구현을 시작했는데, 정작 필요한 이벤트 일부(화면에 오브젝트 출력을 완료했을 때 발생하는 이벤트 등)는 없어 스레드 처리 등을 수동으로 해야 했다.
  • UI 구현에 너무 많은 시간을 사용한 나머지 영상 처리 모듈 부분에 신경을 거의 쓰지 못했다. 원래 계획대로였다면 최소한 화면에 탐지된 영역의 넓이와 같은 정보가 영상에 같이 출력되어야 했지만, 실제로는 완성하지 못했다.
  • 지도 출력 부분에서 원래 계획대로였다면 VWorld 지도를 사용해야 했으나, API Key 발급과 모듈 구현 등의 문제로 OpenStreetMap으로 전환할 수밖에 없었다. OpenStreetMap은 Qt Framework에서 이미 구현된 QML 모듈을 제공하기에 바로 사용할 수 있었지만, VWorld는 QML 인터페이스와 바로 호환되는 모듈이 없었다. 직접 구현하는 시간과 제약 사항 등을 고려했을 때, VWorld 사용을 포기해야만 했다.
  • 완성된 프로그램의 배포본 제작 과정에서 약간의 시행착오가 있었다. 특히 외부 라이브러리에 많이 의존하는 만큼(Qt 및 OpenCV 등) 필요한 일부 dll 파일 등을 직접 찾아 복사해야 했다. 그럼에도 불구하고, 일부 기능이 개발 PC 말고 다른 곳에서 제대로 동작하지 않는 문제가 발생했다.

차후 구현할 내용

  • 영상 처리 모듈 개선 : UI/UX 구현에 신경쓰느라 거의 손을 대지 못했다. 추후 개선할 때는 이 부분이 가장 시급할 것으로 보인다.
  • 드론 통신 부분 개선 : 현재까지 간단한 연결 실험 정도만 이루어졌기 때문에, 갑자기 연결이 끊어지는 상황 등을 가정한 테스트가 더 필요하다.
  • 실행 중 환경 설정 변경 구현 : 최종 제출물에서 미구현된 기능이다.
  • 배포본에서 정상 동작하지 않는 기능 수정 : 누락된 라이브러리 파일 등을 찾아 추가로 포함시켜야 한다. Qt Framework 상에서 현재 에러 메시지 등을 확인할 수 없음에도 불구하고 동작하지 않는 경우이기 때문에 문제의 원인을 찾는 데 약간 시간이 걸릴 듯 하다.