햇살론

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

프로젝트 개요

기술개발 과제

국문 : 드론을 이용한 페이스메이커

영문 : Pacemaker using Drones and Computer Vision

과제 팀명

햇살론

지도교수

정형구 교수님

개발기간

2021년 3월 ~ 2021년 6월 (총 4개월)

구성원 소개

서울시립대학교 컴퓨터과학부 20158710** 김*현

서울시립대학교 컴퓨터과학부 20159200** 김*원

서울시립대학교 컴퓨터과학부 20159200** 김*완

서울시립대학교 컴퓨터과학부 20159200** 임*영

서론

개발 과제의 개요

개발 과제 요약

- 컴퓨터에서 ROS 커맨드를 통해 Pixhawk 드론을 컨트롤한다.
- JMAVSIM 또는 Gazebo 등 시뮬레이터를 이용하여 테스트한다.
- OpenCV를 사용하여 카메라를 통해 받아진 영상을 컴퓨터로 인식 처리한다.
- 드론 조작에 필요한 초기 파라미터를 배포된 웹 앱을 통해서 받는다.

개발 과제의 배경

- 현대인들에게 운동은 필수적인 여가활동으로 자리 잡았으며, 그중 가벼운 달리기를 즐기는 사람들은 점점 늘어나고 있다.
- 이런 달리기를 하는 러너들에게 일정한 속도를 유지하며 달리는 훈련이 필요하다.
- 현재 러너들은 스마트워치나 스마트폰의 앱을 이용하여 훈련하지만, 이 방식은 달리기 중의 집중력을 떨어뜨리고, 자세를 무너뜨리는 단점이 존재한다.
- 현재 주목받는 기술인 드론을 활용하여 실생활에 도움이 되는 기능을 제작한다.

개발 과제의 목표 및 내용

- 트랙의 레인을 인식해서 드론이 가야 할 길을 스스로 인식한다.
- 드론은 사용자가 설정한 속도와 시간 동안 트랙을 자율적으로 주행한다. 
- 사용자가 웹을 통해 드론의 설정값을 동적으로 입력 할 수 있다.

관련 기술의 현황

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

  • 전 세계적인 기술현황

○ (해외) 드론의 본격적인 사용화에 대비하여 운영기준 연구와 더불어 시장 선점을 위한 기술개발, 주요 경쟁분야에 대한 투자가 적극적으로 이루어지고 있음
- (미국) 운영기준 개발, 항공교통관계 프로세스, 충돌감지 및 회피 기술, 데이터링크 기술, 위험도 평가 연구 등을 중점으로 추진(2021년까지 국립과학재단(NSF) 무인기 분야 기초연구 지원 규모 400억 원 가량)
- (중국) 시스템 표준 및 감항, 기술기준 연구, 상황 인식 및 충돌 회피, 클라우드 비행시스템 개발, Anti 드론 기술 연구 추진

○ (국내) 국내 민수용 드론 기술의 수준은 초기 단계에 머물러 가치평가가 어렵지만, 8대 핵심 부품 기술은 선진국 대비 약 10~50%p의 격차가 존재
- H/W 기술 수준은 높은 편이지만 군수용·공공목적용 개발에 치중되어 있음
- 경쟁력 있는 소형 드론 핵심기술은 현재까지 개발사례가 적음
- ‌S/W 기술 또한 재난현장, 공간정보 측량 등 기존 농업용, 영상용에서 발전된 특수한 활용 확대 기술 개발 사례는 적은 편
- 서비스 분야는 잠재가치가 큰 물류, 충돌방지 서비스 기술 연구개발 중으로, 시장은 아직 활성화되지 않은 상황
- 소형 드론의 주요 부품 기술 수준은 세계 최고 대비 65% 수준에 달하지만, 스마트폰과 공통으로 사용되는 부품(AP, 배터리, 디스플레이, S/W 등)의 경우 세계적 수준

  • 특허조사 및 특허 전략 분석

○ 1978년~2016년까지 윈텔립스를 활용하여 분석한 자료에 따르면, 드론기술 관련 특허는 총 5,752건으로, 출원 건수와 증감폭은 국가별로 차이가 있으나 전반적으로 최근까지는 꾸준한 증가 추세
○ (국내) 1990년 후반부터 본격적으로 출원 활동을 시작하였으며, 내국인 출원 비율이 88%로 주요국가 중에서 가장 기술자립도가 높은 것으로 나타남
- 국내 출원인 수와 출원 건수는 2009년도 이후 큰 폭으로 증가하고 있어, 관련 기술에 대한 연구개발이 활발히 진행됨을 알 수 있음
- 현재 국내 드론 관련 특허는 16000개 이상, 그러나 드론과 러닝을 결합한 특허는 존재하지 않는 것으로 확인 됨.

  • 기술 로드맵

Image readtop 2019 844140 15713090073941123.jpg

시장상황에 대한 분석

  • 경쟁제품 조사 비교

현재 드론과 건강을 결합한 헬스케어형 드론은 국내에 존재하지 않는 것으로 조사됨.
일본 고바야시 아키히토의 저서 '드론 비지니스'에 따르면 일본에서는 드론 페이스메이커를 이용한 조깅 생활 변화에 대한 전망을 내비치고 있음.

  • 마케팅 전략 제시

헬스 케어와 드론의 결합을 중심으로 삼은 홍보가 주가 될 예정

개발과제의 기대효과

기술적 기대효과

- 드론 프로그래밍 기술이 현실에서 쉽게 접할 수 있게 됨으로써 한국의 드론 개발에 대한 관심도를 높일 수 있다.
- 배터리 발전, 드론 소형화로 드론이 보편화 될 수 있는 환경에서의 유용한 드론 프로그램의 예시를 제공한다

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

- 현재 주목받고 있음에도 불구하고 비싼 장난감 정도로만 인식되는 드론을 현실에 도움이 되는 도우미 역할로 접하게 할 수 있다.
- 운동, 건강 관련 제품의 출시는 그 자체로 사람들의 운동과 건강에 대한 관심도를 올리는 데에 한 역할을 하고 있다. 운동 보조 역할을 하는 드론을 통해 일반 시민의 자연스러운 운동 참여를 독려한다.

기술개발 일정 및 추진체계

개발 일정

3월 : 구현과제 설정, 요구사항 결정, 사용 기술 스택 및 하드웨어 스펙 조사

4월 : 사용 기술 스택 및 하드웨어 스펙 조사, 구현 방향성 설정 및 프로토타입 제작

5월 : 프로토타입 제작

- 시뮬레이션 환경에서 dronekit 라이브러리를 사용한 자율주행 코드 구동 및 구현 환경 설정
- 길찾기 알고리즘 제작(OpenCV 이미지 분석, Canny Edge Filter, Sliding Window 등 사용)

6월 : 5월 결과를 기반으로 제품 수정 및 발표 자료 제작

구성원 및 추진체계

- 임*영 : 시뮬레이션 설계, 길찾기 알고리즘 보완/수정, 드론 주행 및 통신 코드 제작
- 김*원 : 길찾기 알고리즘 제작
- 김*완 : 시뮬레이션 설계, 드론 주행 코드 제작
- 김*현 : 길찾기 알고리즘 제작, 통신 앱 제작 및 배포

설계

설계사양

제품의 요구사항

- 드론은 일정한 속도로 비행한다.
- 드론은 카메라를 통해 트랙을 인식하고, 스스로 어느 방향으로 나아가는지를 정한다.
- 드론의 속도와 비행시간 등은 웹/앱을 통해 제어가 가능하다.
- 사용자는 드론 페이스메이커를 사용하기 위해 드론에 대한 지식을 가질 필요가 없으며, 그저 웹/앱을 통해 설정을 변경하는 것만으로 드론 페이스메이커를 사용할 수 있다.

설계 사양 (하드웨어)

드론 컨트롤러

- 프로그래밍을 통한 드론 이동이 가능해야 하기 때문에 PX4 펌웨어를 탑재한 Pixhawk 컨트롤러 사용

컴패니언 컴퓨터

- 초기 목표인 실시간 이미지 처리가 가능해야 함, 이미지 연산에 어느 정도의 CPU, RAM 스펙이 필요한지 모르는 상황에서 설계
- 라즈베리 파이 4
  - CPU: Raspberry Pi 4 uses a Broadcom BCM2711 SoC with a 1.5 GHz 64-bit quad-core ARM Cortex-A72 processor, with 1 MB shared L2 cache.
  - RAM: 4GB
- 라즈베리 파이 3
  - CPU: Broadcom BCM2837 SoC with a 1.2 GHz 64-bit quad-core ARM Cortex-A53 processor, with 512 KB shared L2 cache
  - RAM: 1GB
- 카메라 2대의 동시 이미지 처리를 위해 CPU 스펙이 대폭 상승한 라즈베리 파이 4 사용, 무게는 거의 동일하기 때문에 고려하지 않음 (300g)

설계 사양 (소프트웨어)

드론 조종 코드

- MAVSDK-Python을 사용해 드론 위치 조종
- OpenCV를 사용해 경로 인식

사용자용 웹 페이지

- 웹소켓
- 드론 조종 코드에서 웹소켓 서버 오픈
- 웹서버는 드론 외부에서 열고 사용자는 컴패니언 컴퓨터와 연결된 무선인터넷의 내부 IP를 사용해서 드론의 설정값 전달

이론적 계산 및 시뮬레이션

◇ OpenCV 영상처리

1. Wrapping 변환

Opencv의 getPerspectiveTransform(), warpPerspective() 함수를 이용하여 전체 화면에서 원하는 영역을 선택하여 원근법 변환을 진행한다. 원근법 변환이란 직선의 성질만 유지가 되고, 선의 평행성은 유지가 되지 않는 변환이다. 정면에서 보는 화면이 위에서 보는 화면처럼 보이는 효과가 있다.

2. Color_filter 함수를 사용하여 원하는 색을 남긴다.

전체 색 영역 중 최소값(lower)과 최대값(upper)을 지정하여 영역 밖의 색을 모두 지운다.

3. Roi함수를 통해 영상에서 필요없는 부분을 제거한다.

4. Threshold(이진화)를 통해 임계값 이상의 값만 하얀색으로, 그 외엔 검은 색으로 바꾼다.

5. Plohistogram 함수를 사용하여 이진화된 라인의 왼쪽과 오른쪽을 결정한다.

6. 결정된 분포도를 기준으로, slide_window_search를 진행한다.

전체화면에서 라인이 있는 부분의 인덱스만 저장, 작은 window 사이즈로 그것들을 나눈다. window들(4개)은 연속적으로 존재하기에 직선은 물론 곡선까지 나타낼 수 있다. 
드론의 현재 위치와 인식한 라인의 중간지점의 각도로 드론의 방향을 결정하는데 라인 인식이 안 되면 90도를 리턴한다. 
left_current = 이미지의 왼쪽에 있는 값 중 가장 큰 값을 가진 인덱스
good_left = window 안에 있는 부분만을 저장
good_left의 길이가 50보다 작으면 다음 window의 left_current는 good_left의 nonzero_x의 인덱스 good_left의 값을 가지는 인자들의 mean값.

6. 인식한 라인을 채우는 fillpoly 함수를 이용하여 라인을 색으로 채운다.

fillPoly함수로 왼쪽 선과 오른쪽 선을 포함하는 다각형을 그리고, pts_mean은 선과 선 사이의 center값으로 휘어진 곡선의 정도 등을 알 수 있다.
Warpping 함수에서 가져온 값 minv를 이용해 원근감을 다시 준 이미지에 addWeighted함수로 다각형 색을 연하게 합성하는 작업으로 최종 라인이 그려지게 된다.
동시에 드론과 라인의 위치를 통해 각도를 구한다.
단, 30도 이상의 급격한 각도변화는 예외 처리한다.


위 과정을 통해 현재 내가 속해있는 트랙을 구분할 수 있다.

◇ 영상 처리 정보를 활용한 드론의 이동

영상 처리 과정을 통해 현재 내가 속한 트랙의 가운데 지점을 검출해 낼 수 있었다.

드론의 Yaw 값은 드론의 현재 각도 값이라고 할 수 있는 값이다.
범위의 중앙을 검출해냈고, 화면의 중앙이 드론의 위치라고 가정하면 범위 중앙 쪽으로 계속 회전을 하며 나아가면 라인을 벗어나지 않으면서 직선주로와 곡선주로 모두 잘 갈 수 있다는 사실을 유도해 내었다.

또, 정해진 속도로 x축 방향의 이동과 y축 방향의 이동을 항상 일정하게 해야 하므로 각속도를 이용하였다.
N_loc이 y축 방향의 좌표, E_loc이 x축 방향의 좌표라고 할 때, 현재 각도 yaw를 radian으로 변환한 후, 이를 cos, sin 해주면 각각의 방향 벡터의 합은 항상 일정하게 1을 가리킨다.
여기에 velocity와 시간 초 사이를 뜻하는 interval을 곱해주면 1초의 시간동안 velocity만큼 일정하게 전진하는 값을 얻을 수 있다.
N_loc += interval * velocity * math.cos(math.pi * self.yaw / 180)
E_loc += interval * velocity * math.sin(math.pi * self.yaw / 180)

상세설계 내용

시뮬레이션 툴(Gazebo)에서 육상트랙을 설정해서, 카메라를 통해 트랙을 인식하여 일정 속도로 주행하는 드론 시뮬레이션 프로그램을 제작.
동작 시, 드론의 속도/제한 시간 등은 웹 또는 앱을 통해 추가로 설정할 수 있도록 함.

시뮬레이션

- SITL(Software In the Loop) 시뮬레이션을 위해 Gazebo 시뮬레이터 사용
- 시뮬레이터 안의 드론의 카메라 사용을 위해서 Typhoon H480 모델 사용
- 시뮬레이션 툴 내의 육상트랙 구축을 위해 SketchUp 모델링 툴 사용

드론 조작

- MAVSDK-Python 라이브러리 사용
- OpenCV를 통해 인식된 트랙의 가운데 지점이 화면의 가운데 지점과 x축, y축으로 얼마나 떨어져 있는지와 아크 탄젠트 함수를 사용해서 변경해야 할 각도 판단
- 이동할 각도에 이동속도와 삼각함수를 사용해서 x축과 y축으로의 이동 방향 결정

이미지 분석

- OpenCV를 통해 전면의 카메라 이미지를 분석
- Sliding Window 방식을 이용하여, 이미지상의 곡선과 직선의 좌표를 알아내어 드론의 위치를 조정
- 노이즈, 이미지 분석의 완성도를 위해서 마스킹, 가우시안 필터 등의 기법을 적용

통신 앱

- 드론의 속도/제한 시간 등을 동적으로 설정하기 위한 리액트 앱 제작
- http 프로토콜로 연결, 웹소켓 통신을 하기 위해 시뮬레이터의 IP 주소를 전달받아 기기로 전달
- aws-s3 를 이용한 웹 호스팅 이용

결과 및 평가

완료 작품의 소개

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

드론주행.png

포스터

드론설정.png

관련사업비 내역서

각자 재택 작업으로 별다른 구매활동을 하지 않았음.

완료작품의 평가

햇살론평가.PNG

향후계획

- 인식률 개선
- 앱을 통하여 원하는 때에 시작과 종료를 할 수 있는 기능
- 속도와 시간을 알맞게 조절하여 코스를 설정
- 실제 드론에 적용
- 특허 출품

특허 출원 내용

아직 진행된 바 없음