관리 메뉴

JIE0025

[2019자바프로젝트]첫 프로젝트 : 모션인식을 통한 파일 전송 (상반기) 본문

개인 활동/프로젝트 결과

[2019자바프로젝트]첫 프로젝트 : 모션인식을 통한 파일 전송 (상반기)

Kangjieun11 2020. 1. 21. 22:22
728x90

18년 학부생으로 입학한 후 2학년이 되었다. 

2학년 전공 선택과목으로 수강한 JAVA 에서 프로그래밍을 배운 후 처음으로 프로젝트를 진행하게 되었다.

 

프로젝트 진행 기간 : 3월 ~ 6월 (2019년, 2학년 1학기)

 

1. 프로젝트 이름

 Mr. FILE ( 'Motion Recognition' demo using FILE transmission)

 

2. 팀 역할 분담

 팀장(본인) : 파일전송 서버 및 클라이언트, UI design

 팀원 1 : 모션인식 및 마우스 연동

 팀원 2 : UI 구현, UI Design

 

3. 개요

 - 아이디어 상의 중 마우스를 쥘 수 없는 환경에 있거나, 손가락을 자유자재로 움직일 수 없는 사람들이 컴퓨터를 사용할 때 불편할 수 있다는 문제점에 대해 생각을 하게 됨.

 - 모션 인식 기술로서 컴퓨터와 상호작용을 하게 되면 언급한 내용을 개선시킬 수 있을 것이라 예상해보면서 기획을 함.

 

4. 목적

 앞에서 언급했던 문제점을 해결하기 위해 모션 인식 기술을 기반으로 다양한 기능을 추가 함으로서

마우스나 터치패드 없이 입력 장치로서의 기능을 다 하는 것

 

5. 개발 일정

6. 기능 소개

 1) File Drag & Drop

    방향별로 존재하는 Adapter에 각각 다른 사용자를 설정한다.

    Drag & Drop을 통하여 파일을 잡고, Adapter로 Drop 시키면 파일이 전송된다.

 2) TCP를 이용한 파일전송

    클라이언트에서 파일을 Drag & Drop 하게 되면, Drag된 파일의 절대경로를 인식하여 보낼 파일의 이름을 알려준다.

    서버에서 파일을 전송받아 바탕화면에 띄운다.

3) 모션 인식 Interface 

    - 노트북의 카메라를 통하여 사용자의 모션을 입력한다.

    - 손가락 관절 하나하나와 손바닥의 움직임을 체크한다.

    - 손가락으로 잡는 듯한 모션을 위해 엄지와 검지를 인식한다.

    - 클릭하는 모션을 잡는 것처럼 표현하기 위해 두 손가락의 각도를 인식한다. 

    - 일정 각도보다 작아질 경우에 손가락을 모은 것으로 인식하며, 마우스 클릭과 클릭한 상태를 유지한다. 

    - 일정 각도보다 커질 경우에 클릭 상태를 해제한다.

 

 

7. 개발 언어와 도구

 1) UI : Java (eclipse)

 2) server & client : Window API 소켓 프로그래밍을 이용, C++ (visual studio)

 3) motion recognition : python, open cv와 연동 (pycharm)

 

8. UI 소개

 

9. 견본이미지

 

 

 

10. 후기

아무것도 몰랐기 때문에 어려웠고 힘들었던 시간이었지만, 개발을 해보았다는 경험 하나로 충분히 값진 시간이었다. 

또 프로그래밍과 개발은 다른 것이라는 것을 알 수 있었다. 

한가지 아쉬운 점은 개발을 어떻게 하는 지 방법을 아예 모르는 상태로 결과를 얻어 내야 했기 때문에 많은 시간의 노력과 삽질이 필요했다는 점이다. 3월에 주제를 선정하고, 6월까지 한 것 치고 완성도가 높지 못했던 이유도 여기에 있다. 

 1학년 때 씨언어만을 열심히 공부하면서 비쥬얼 스튜디오에 너무 익숙해져 있었다. 그래서 새로운 IDE를 접하는 것도 어렵게만 느껴졌다.

 비쥬얼 스튜디오를 사용하고 싶다는 마음에서 파일 전송을 C++로 구현하였는데 자바나, 파이썬으로 구현했으면 시간이 더 단축 되었을 것이라고 생각도 든다.

 TCP를 이용한 파일 전송에서 생겼던 문제점은 절대경로와 상대경로의 개념을 제대로 알지 못했기에 왜 전송이 되지 않는지 알 수 없었다. 이 문제를 해결하는 데에만 2주 정도 걸렸던 것 같다. 

 데모 전 마지막 테스트를 할 때, 내 노트북 환경에선 잘 되던 파일전송이 안되는 문제점도 있었다. 3일 밤을 잠을 덜 자가며 해결 방안을 찾아 보았다. 문제 발생 당시엔 소스에 오류가 있는 것인가 하고 소스 디버깅을 해보았는데 어느 순간에 잘 되던게 환경이 변해서 안된다면 소스에는 이상이 없을 것이라고 판단이 되었다. 상대 컴퓨터에 백신이 깔려 있었기 때문에 MR.FILE 실행프로그램을 알 수 없는 프로그램으로 판단하였던것이 원인이었다.

데모 전 주는 디버깅과 테스트, 발표자료 만들기를 하는데 거의 모든 시간을 사용했다. 

데모는 학생평가와 전문가평가로 나뉘어 진행하였다. 오전에는 데모 준비에 모든시간을 사용했고, 오후에 약 5시간동안 부스를 운영하였다. 전문가 평가는 비공개라서 결과를 알 수는 없었지만 학생평가에서 1등을 함으로서 좋은 결과를 낳으면서 프로젝트는 마무리 되었다.  

 아쉬운 점도 많았지만 완성 할 수 없을 것만 같았던 프로젝트가 무사히 완성 됐음에 감사할 뿐이다.