지우월드 - 택배 도난 방지 시스템

MIE capstone
이동: 둘러보기, 검색

프로젝트 소개

수업 소개

강 의 명 : 내장형시스템및실습(Embedded Systems and Experiment)
지도교수 : 김태현 교수님
담당조교 : 이경현 조교, 김태하 조교

프로젝트 명

택배 도난 방지 시스템

프로젝트 기간

2017. 03. 03 ~ 2017. 06. 16

팀 소개

서울시립대학교 기계정보공학과 20144300** 이*우(팀장)
서울시립대학교 기계정보공학과 20128600** 이*석
서울시립대학교 기계정보공학과 20124300** 김*수
서울시립대학교 기계정보공학과 20129200** 박*희

프로젝트 개요

요약

이용자가 부재중인 집에 택배가 도착했을 시, 이를 알려주고 도난상황에 대비할 수 있는 시스템을 구축한다. 만약 도난 상황이 발생하였다면 촬영된 사진 이미지와 동영상이 범인을 검거하는데 유용한 증거자료로 사용될 수 있다.

배경

2015년 통계청의 가구 구성비율 통계를 참조하면, 1인 가구는 전체 구성비의 27.2%를 차지하고 있으며 2045년에는 40% 이상의 비율을 차지할 것으로 예측될 정도로 1인 가구의 비율이 매우 많아지고 있는 실정이다. 이런 상황에서 개인 여가시간의 평균은 오히려 더욱 감소하여 2016년 기준 평일 3.1 시간, 주말 5.0 시간으로 집을 비우는 시간은 매우 많다고 할 수 있다. 따라서 택배 서비스의 이용은 증가하는데 반해 오히려 집에 부재중인 시간은 많기 때문에 이런 상황에서 도난 상황에 대비하고, 도난 상황 발생시에는 촬영된 이미지와 동영상을 이용하여 범인을 검거하는데 증거 자료로 이용할 수 있다.
1인가구.PNG
Lei.PNG

개발 목적

라즈베리파이에 카메라 모듈과 적외선 센서를 부착하여, 이미지 프로세싱 및 어플리케이션 연동 기술을 이용하여 택배 토착 상황과 도난 상황 발생시에 이용자가 이를 편리하게 알 수 있는 종합적인 시스템을 구축하는 것을 목표로 한다.

개발 기대효과

경제적인 가격( KIT 포함 약 5만원 내외, 2017.06 기준)에 1.2GHz의 CPU 1GB의 메모리 용량을 자랑하는 라즈베리 파이와 모듈을 통해 종합적인 시스템을 구축하기 때문에 많은 비용을 들이지 않고 도난 방지 환경을 구축할 수 있는 장점을 가지고 있다. 또한 모든 이미지 정보와 동영상은 어플리케이션을 통하여 확인하고 필요한 경우 다운도 가능하기 때문에 어플리케이션 사용의 편의성 까지 도모하여 이용자가 실시간으로 어디에서든 택배 수령 정보를 확인할 수 있다. 이런 환경을 통해 현재 택배의 단순 도착여부만 알 수 있는 기존의 어플리케이션을 넘어서 배달정보와 물건상태까지 확인할 수있는 종합적인 시스템을 개발할 것이다.
이런 개발로 인한 기대효과 뿐만 아니라, 기계정보공학을 전공하는 학생으로서 이미지 프로세싱 기술 , 웹페이지 제작 기술, 그리고 라즈베리 파이를 이용한 리눅스에 대한 이해 등을 통해 기계공학이 아닌 기계정보공학에 대한 전공역량을 향상시키는 계기가 될 것으로 기대한다.

프로젝트 목표

개략도.PNG

하드웨어로 사용되는 라즈베리파이 3B는 다음과 같이 3가지 종류의 모듈을 확장하여 기능을 수행한다.
1.적외선 센서 : 사람의 출입 유/무를 감지하는데 사용한다.
2.정면 카메라 : 도난 상황시에 동영상을 촬영하는 기능을 수행한다.
3.상단 카메라 : 택배를 수령하는 상황에 사진을 촬영하여 이미지 처리를 이용하여 수령 여부를 판별하는데 사용된다.
사용자가 결과를 실시간으로 확인하기위해서 디바이스로는 안드로이드 스마트폰을 사용한다. 스마트폰의 어플리케이션을 통해서 사진 및 동영상을 다운받을 수 있으며, 푸쉬 알람을 통해 택배 수령여부를 알림으로 받는다.

목적계통도

목적계통도.PNG
  • 품질
신뢰성- 택배 도착/ 도난 상황시에 사진정보와 비디오 정보가 정확하게 저장되어야 한다. 이것을 통해 이용자가 안심하고 시스템을 이용할 수 있도록 한다.
심미성- 외부케이스를 레고를 사용하여 흥미를 유발하며 디자인 적인 요소를 가미하여 현관 위에 있는 하드웨어에 이질감이 들지 않도록 설치하는 것을 목표로 한다.
  • 편의성
직관성- 안드로이드 스마트폰에서 어플리케이션을 이용하여 택배도착 / 도난여부를 확인 할 수 있도록 한다. 또한 필요시에는 이미지 파일이나 동영상을 다운 받을 수 있도록 사여 사용자의 편의성을 도모한다.
  • 경제성
비용- 핵심부품인 라즈베리파이 3B의 가격이 35$ / 약 5만원 내외의 저렴한 가격이며, 추가로 기능을 확장하는 모듈인 상부 카메라/정면 카메라/적외선 센서 모두 합리적인 가격의 제품이기 때문에 경제적인 부분에서 비용을 절약할 수 있다.
자원관리 - 시스템이 실행될 때 항상 같이 동작하는 적외선 센서는 CPU와 메모리를 모두 적게 사용하는 모듈이며, 카메라 센서는 적합한 상황에서만 작동하게 함으로써 CPU와 메모리의 자원을 절약하며 사용되는 전력을 줄여 효율적인 자원관리를 도모한다.

시나리오

시나리오.PNG

설계 사양

장치명 사진 역할 제원
적외선 센서 적외선센서.png 사람 인식 유효 감지거리 : 7m

감지각도 : 120도
작동전압 : 5~20V
PCB Dimension : 32mm*24mm
사람이 등장한 경우에 온도가 바뀌기 때문에 이 바뀐정보를 적외선 센서를 통해 감지하여 사람의 유/무를 판별한다.

카메라 모듈 카메라 모듈.png 이미지 처리용

이미지 캡쳐

해상도 : 8백만화소

유효 사진 해상도 : 3280 x 2464
작동 범위 : -20도 ~ 60도
택배를 수령한 경우에 현관의 이미지가 택배수령 전의 이미지와 다르기 때문에 이때부터 택배를 인식하는 루틴이 실행된다. 전/후 이미지를 처리하여 택배 수령 여부를 판단하는데 쓰인다.

웹캠 웹캠.jpg 영상 촬영 해상도 : 1920 x 1080 p

화각 : 90도
도난을 감지한 상황에서 동영상을 촬영하는 역할을 담당한다.

웹 어플리케이션 웹어플리케이션.png 웹 어플리케이션 제작한 웹페이지를 어플리케이션화 하여 카메라모듈에서 촬영한 영상 , 사진 정보를 확인하고 필요한 경우에는 다운할 수 있는 역할을 수행한다.

결과 요구사항

번 호 통합 하드웨서 동작 여부 판단기준 목표치 중요도
1 적외선 센서가 사람 출연을 잘 감지 하는가 사람 출연시 동작 여부 (성공횟수 / 총 50회) 100%
2 택배 도착상황을 정확하게 인식하는가 택배 도착 여부 판별 (성공횟수 / 총 50회) 100%
3 택배 도난상황을 정확하게 인지하는가 도난/수령 상황시 푸시알람 송신 여부 (성공횟수 / 총 50회) 95%
4 정상상태에서 안정적인 하드웨어 동작여부
5 웹 어플리케이션에서 사진이미지 확인이 가능한가 어플리케이션 실행후 사진 확인 ( 성공횟수 / 총 50회 )
6 웹 어플리케이션에서 동영상 다운로드가 가능한가 어플리케이션 실행후 다운로드 실행 ( 성공횟수 / 총 50회 )

프로젝트 개발 과정

역할 분담

팀원 명 역 할
이지우 팀장, 카메라 모듈, 이미지 프로세싱 프로그램 제작
이원석 이미지 프로세싱 프로그램 제작, 어플리케이션 제작
김준수 이미지 프로세싱 최적화, 모듈 통합, 각종 문서 정리
박연희 서버 환경 구축, 어플리케이션 구현, 사진 / 동영상 저장 알고리즘 제작

개발 일정

개발일정.png

프로젝트 결과

Flow Chart

Flow.png

라즈베리 파이 구현

이미지 처리

이미지 처리의 순서는 다음과 같은 순서로 작동한다.
전.png

<택배 수령 전 이미지>

후.png

<택배 수령 후 이미지>

Diff.png

<이미지 차이를 수행한 이미지>

사진 파일의 픽셀 정보는 각각의 픽셀의 R[255]G[255]B[255]의 행렬 데이터 값을 통해 저장된다. 여기서의 차이점은 택배의 유무이기 때문에 두 이미지의 행렬의 차를 구하면 우리가 원하는 택배의 이미지를 얻을 수있다. 단, 두 이미지 행렬의 차이가 음수인 경우에 cvDiff() 함수는 이미지 행렬값을 모두 0으로 바꾸기 때문에 우리가 원하는 이미지를 얻기에 어려움이 있다. 따라서, 차이가 음수일때는 이를 절대값으로 바꿔주는 cvAbsDiffS() 함수를 사용하여야 원하는 이미지의 차이를 얻을 수 있다. 이 함수를 이용한 결과는 다음과 같다.
Smooth.png

<가우시안 필터링을 거친 후의 이미지>

위의 두 이미지 차이를 통해 얻은 이미지는 노이즈가 있기 때문에 우리가 원하는 택배형상을 디텍팅 하는데 문제가 있다. 따라서 우리가 원하는 이미지를 얻기 위해서 다음과 같은 과정을 거쳐서 사진을 최적화 한다.

cvSmooth() 함수를 이용하여 가우시안 스무딩 필터링을 거친다.

Black.png

<흑백 이미지 변환 이미지>

흑백 이미지 변환. RGB 형태의 이미지를 흑백으로 변환하여 이미지 처리에 용이하게 바꾼다.
Under.png

<under 50을 수행한 후의 이미지>

픽셀 행렬의 데이터 값이 50이하인 경우의 이미지를 모두 0으로 바꿔서 흑/백 대비를 더욱 명확하게 한다.
Threshold.jpg

<Threshold를 이용한 이미지 최적화>

설정한 임계값보다 아래의 픽셀은 0으로 이상의 픽셀은 모두 1로 하는 스레시 홀드(threshold)과정을 수행한다. openCV의 cvThreshold()함수를 활용한다.
Mopology.png

<모폴로지 기법을 사용한 최적화 이미지>

모폴로지 기법을 이용하여 이미지의 잡음을 제거한다(침식/팽창 연산수행).
Tracked.png

<택배 형상 디텍팅>

위의 최적화 수행을 이용한 이미지를 이용하여 사각형 형상을 디텍팅하고 이 이미지를 본래 택배 배송한 이미지에 덮어씌워 최종 결과 이미지를 출력한다.

서버

  • apache2로 서버 구축
  • JSON file format을 통하여 라즈베리파이에 내장된 컨트롤러와 서버 간의 실질적인 데이터 교환이 이루어진다.

어플리케이션 구현 화면

  • 총 3개의 view로 구성됨
  • Main : 초기 화면
  • Detail : 라즈베리파이 컨트롤러에서 일련의 프로세스를 처리한 후 표출되는 이미지파일과 영상파일을 보여준다.
  • postList : json에 기록된 데이터 로그들을 바탕으로 list를 구현하여, 최근의 기록된 다수개의 log를 화면에서 list형태로 볼 수 있다.
App1.jpg App2.jpg App3.jpg

시행착오

1.메모리 회수

open CV 자체의 문제
웹캠에서 동영상 촬영 후 파일형태로 저장하고자 할때 초기에는 openCV 라이브러리의 cvQueryFrame함수와 cvWriteFrame함수를 사용하였는데, 여기서 메모리가 부족해지는 문제가 발생하였다. 구체적인 문제는 다음과 같다.
  • cvQueryFrame : 카메라에서 한 프레임을 잡아와서 Image 구조체에 이 프레임을 넣는 함수이다.
  • cvWriteFrame : 지정된 동영상 파일을 한 프레임 씩 출력하는 역할을 수행하는 함수이다.
따라서 본 프로젝트에서는 위의 두개의 함수가 웹캠에서 이미지를 한장 찍고, 이 데이터를 메모리에 할당한 후에 이미지를 저장하고 이 데이터를 파일형태로 반환하는 역할을 수행한다.
그러나 동영상 촬영의 경우에는 짧은 프레임을 주기로 이런 루틴이 계속하여 반복되기때문에 동적으로 할당된 메모리를 해제시켜주는 부분이 없으면 메모리 누수의 문제가 발생한다. 한편, cvQueryFrame 함수의 특성상 메모리 할당을 해제 할 경우 다음 프레임의 이미지 촬영을 할 수 없다. 그 결과, 메모리의 누수의 문제가 발생하여 자원관리 측면과 실행속도에서 문제가 생겼다.
문제의 해결 : 프로세스단에서의 실행
해당 문제에 관해 명확한 해결책을 찾지 못하였으며, openCV 라이브러리 자체에서 해결할수 없는 문제라고 생각하였다. 따라서 스레드단에서의 함수 실행을 프로세스단에서의 실행으로 바꾸고, 프로세스가 종료될 경우 자동으로 운영체제에서 메모리를 회수하게 하여 문제를 해결했다.

2.이미지 최적화

이미지 데이터의 노이즈
이미지 최적화 과정에서 초기 설계 루틴은 다음과 같다.
1)두 이미지 픽셀행렬의 데이터의 차이를 이용한 뺄셈을 수행
2)가우시안 필터링을 거쳐 최적화
3)Gray Scale로 변환하여 명암대비 확대
4)스레시홀드 과정을 거쳐서 최적화
위의 4가지 단계를 거쳐 이미지 처리를 수행하였으나, 이미지 데이터가 가지고 있는 노이즈 때문에 우리가 원하는 택배형상을 정확하게 디텍팅 할 수 없는 문제점이 발생하였다.
모폴로지 기법을 이용한 최적화
위의 문제점을 모폴로지 기법을 이용하여 해결하였다.
  • Mopology : 영상을 형태학적인 관점에서 접근하여 영상안에 존재하는 특정 객체의 형태를 변형시킨다. 이런 변형과정에서 잡음을 제거하고, 영상 내의 객체의 모양을 기술하는 용도로 주로 사용된다.
1.침식연산 - 필터의 크기와 반복 횟수에 따라 작은 덩어리의 객체를 사라지게 한다. 그레이 영상의 경우에는 밝은 영역이 줄어들고 어두운 영역이 늘어나는 쪽으로 연산결과가 출력된다. erode() 함수를 이용한다.
2.팽창연산 - 필터의 크기와 반복횟수에 따라 객체 내부의 구멍을 사라지게 한다. 침식연산과는 반대로 영역을 넓이는 연산이며, 최대값의 필터 역할을 수행한다. dilate() 함수를 이용한다.
모폴로지 기법을 이용하여 이미지 최적화를 거친 결과, 택배 형상 이외의 물체를 디텍팅 하지않고 우리가 원하는 택배형상의 물체를 잘 탐지하였다.

3.미디어 파일을 웹페이지에 동적으로 게시

파일 형식의 문제
카메라 모듈을 이용하여 촬영한 이미지와 동영상 정보를 어플리케이션에서 이용하기 위해서는 각 파일의 데이터를 저장하여 웹페이지에서 이를 사용할 수 있어야 한다.
기존의 구상한 방식인 google spreadsheet API의 경우, CORS(​Cross-origin resource sharing )문제로 인해 원활한 데이터 처리를 할 수 없었다.
[CORS 문제] Ajax(Asynchronous JavaScript and XML, 에이잭스는 대화식 웹 애플리케이션의 제작을 위해 아래와 같은 조합을 이용하는 웹 개발 기법이다.)에는 기본적으로 Same Origin Policy라는 원칙이 있다.
현재 브라우져에서 보여지고 있는 HTML을 내려준 웹서버(Origin) 즉 동일한 도메인 간에서만 Ajax 요청을 보낼 수 있다.
이를 해결하기 위한 방법으로, 서버와 클라이언트 간 JSON이라는 공유 파일을 이용한 형식으로 데이터 교환을 구현하였다.
JSON 파싱
  • JSON :데이터를 {"KEY":"VALUE}의 정해진 포맷으로 저장하는 파일형식을 의미한다. 데이터를 받아서 객체나 변수로 할당하기 위해서 사용한다.
JSON 파싱이란 JSON 형식을 가진 파일을 이용하여 데이터를 주고 받는 방법을 뜻한다. JSON 파싱을 통하여, 이미지, 동영상의 데이터를 웹페이지에서 사용할 수 있게 되어 웹페이지에 동적으로 게시하는 문제를 해결할 수 있었다.

프로젝트 평가

결과물 평가

동작여부 판단기준 달성도 평가
적외선 센서가 사람 출연을 잘 감지 하는가 사람 출연시 동작 여부 (성공횟수 / 총 50회) 100% (50/50)
택배 도착상황을 정확하게 인식하는가 택배 도착 여부 판별 (성공횟수 / 총 50회) 95% (48/50) 중상
택배 도난상황을 정확하게 인지하는가 도난/수령 상황시 푸시알람 송신 여부 (성공횟수 / 총 50회) 95% (48/50)
정상상태에서 안정적인 하드웨어 동작여부 전력 연결한 상태에서 잘 작동
웹 어플리케이션을 통해 사진, 동영상을 적절히 확인할 수 있게 구현되었는가?
웹 어플리케이션이 적절한 시점에 원활히 동작하는가? 네트워크 문제로 인한 구동 오류/어플 내 동영상 재생 오류 발생

느낀점

내장형 프로그래밍 및 실습 과목은 '융합전공인 기계공학과 정보공학을 접목하여 높은 경쟁력을 가진 창의적인 인재양성을 목표로 한다'는 기계정보공학과의 교육목표에 가장 잘 부합하는 과목이라는 생각이 들었다. 수업에서는 블루투스 통신, PWM 제어, 리눅스 프로그래밍 등 Embedded System을 사용하기 위해 필요한 기본적인 지식을 실습하며 프로젝트에서는 이것들을 활용하여 주제에 맞는 임베디드 시스템을 구현하기 때문이다. 인터넷에 있는 오픈소스를 우리의 목적에 맞게 바꿔 하드웨어를 직접 제어하고 목적을 달성함으로써 기존에 알지못하던 많은 것들에 대해 학습할 수 있는 기회가 되었다.

우리조의 프로젝트를 예로 든다면 이미지 파일을 처리하여 목적에 맞게 바꾸는 이미지 프로세싱 기술, C++의 라이브러리인 openCV, 서버 구축과 JSON을 이용한 파싱, 어플리케이션과 하드웨어의 연동 등이 있다. 여기서 배운 내용을 통해 앞으로 수강하게 될 졸업작품과 기타 과목들, 그리고 학교가 아니라 다른 곳에서도 원하는 바 목적을 달성하고 업무의 구성원으로써 능력을 십분 발휘하는 모멘텀이 되는 계기가 되었기를 소망한다.

최종 발표

프로젝트 결과 발표

2017.06.17 서울시립대학교 과학기술관 3층의 기계정보공학과 도서관에서 해당 프로젝트에 대한 시연이 있었다.

포스터.jpg 발표.jpg
어플리케이션.jpg 단체사진.jpg

지우월드 조의 포스터, 파이널 프로젝트 발표, 어플리케이션 구동상황, 그리고 단체사진이다.

시연

계속해서 인터넷 연결문제가 발생하여, 처음 시나리오대로 원활하게 진행되지 못하였다. 해당 문제와 관해 교수님께서 지적하신 사항으로는 파이와 스마트폰에서 구동하는 웹페이지의 IP를 고정 IP로 잡아놓은 부분에서 스마트폰의 IP는 고정으로 잡힌 부분은 미흡한 부분이라고 말씀하셨다. 프로토 타입으로 제작하였으며, 시간상의 관계로 끝까지 구현하지 못하였기 때문에 해당 상황과 같은 문제가 발생하였다. 더욱 개발을 진행한다면 스마트폰에서 쓰는 IP 값은 지적사항대로 개선하여야 할 사항이다.
또한, 실행중에 메모리 부분에서의 문제가 발생하였는데 이 부분의 원인은 원격제어 프로그램 구동 때문으로 생각된다. 원격제어 프로그램을 통해 구동함으로써, 커맨드 창에 프린트 되는 정보들을 보여주고 시각적으로 더욱 와닫는 시연을 하고싶은 목적에서 해당 프로그램을 구현하였지만, 라즈베리파이의 CPU와 메모리가 부족해져서 오히려 시연에 방해가 된 요인이었던것 같다.

시연 이후 항목

2017.06.17 내장형 및 실습과목 최종 발표시간에 시연에 있어서 미흡한 점이 있었고, 따라서 추가 항목을 작성하여 미흡했던 부분에 대해 시연 이전에 테스트로 실행했던 파일을 첨부하려고 한다. 비록 이번 프로젝트 시연에서 설계한 택배 감지 시스템이 시나리오대로 완벽하게 작동되지 못하였지만, 개발 과정에서 남긴 파일들을 첨부하여 시스템 개발이 실패 한 것이 아니라 시연 상황에서의 여러가지 문제로 인하여 정상적인 구동을 하지 못하였다. 이 항목을 통해 개발 과정에서는 택배감지가 잘 작동되었음을 보충할 것이다.

택배감지 부분 보충

개발 과정 상에서 모델로 이용했던 많은 사각형 형태의 물체와 택배 형상의 물체를 탐지한 이미지를 첨부한다.

사진 원본 이미지 처리 후
연습1.jpg

<연습 이미지 1>

연습2.jpg

<연습 이미지 2>

연습3.jpg

<연습 이미지 3>

택배1.jpg

<실제 택배 이미지 1>

택배2.jpg

<실제 택배 이미지 2>

택배3.jpg

<실제 택배 이미지 3>

택배4.jpg

<실제 택배 이미지 4>