한이음 (Hanium) 결과 보고서 (S/W)



한이음 프로젝트 결과 보고서 (소프트웨어 위주, 개인 작성)


[프로젝트명]

WebioPi를 이용한 옴니 휠 RC카 제어 [19-P490]


[주제 영역]

엔터테인먼트


[기술 분야]

네트워크, S/W, ICT 디바이스


[달성 성과]

캡스톤디자인 연계 작품 전시 및 개인별 역량 강화



프로젝트 소개


옴니 휠을 부착한 RC카를 제작하고 각종 센서를 부착하여 데이터를 수집할 수 있는 옴니 카(Omni Car)를 만들어 보고자 한다.

옴니 휠을 사용하기 때문에 8방향 이동 및 제자리 360도 회전이 자유롭고, 온/습도 및 초음파 센서를 이용하여 환경 데이터를 수집한다. 수집한 데이터는 RC카 컨트롤러 앱을 통해 확인할 수 있으며 간단한 분석 기능까지 제공한다.

RC카는 라즈베리파이와 아두이노 기반으로 동작하고, 앱과의 상호 통신에 WebioPi라는 프로그램을 이용하여 원격으로 옴니 카를 제어할 수 있도록 한다.

종합적으로는 ICT 융복합 디바이스로, 학부에서 배운 다양한 지식을 총망라하여 하나의 소형 로봇을 만들어보는 것을 목표로 한다.



개발 배경 및 필요성


기존 RC카는 한번에 이동 가능한 범위가 제한되다 보니 장애물에 대한 대처가 즉각적이지 못한 것은 물론이고 활용도가 다양하지 않다.

이 프로젝트에서는 사람이 들어가기 어려운 특정 장소(특히 좁은 장소)에 어떤 환경이 조성되어 있는지 확인하고자 할 때 RC카 로봇을 대신 투입함으로써 발생할 수 있는 다양한 위험 요소들을 사전에 파악하여 피해를 최소화할 수 있도록 하고자 한다.

물론 엔터테인먼트 형식으로도 개발되는 프로젝트이기 때문에 환경 파악, 감시 등의 목적이 아니더라도 재미 요소로 이용할 수도 있다.



프로젝트 주요 기능


  • 옴니 휠을 장착하여 8방향 이동과 제자리 360도 회전이 자유롭다.

  • 카메라를 활용하여 RC카가 움직이는 동안 스트리밍 되는 화면을 확인할 수 있다.

  • 안드로이드 애플리케이션에서 다양한 제어 방식으로 RC카를 제어한다.

    • 버튼, 조이스틱, 스마트폰 내장 자이로스코프 센서 조작 방식
  • 온/습도 센서와 초음파 센서로 데이터를 수집하고 WebioPi 상태창으로 불러오도록 한다.

  • 수집된 데이터를 스마트폰 내장 DB에 저장하고 분석해주는 기능을 제공한다.

  • WebioPi를 이용하여 Wifi만 연결되어 있으면 원격으로 RC카를 제어할 수 있다.



작품의 기대효과 및 활용분야


실내에서 발생할 수 있는 환경 변화 체크 또는 방범 용도로도 사용할 수 있고 네트워크가 갖춰진 곳이라면 어디서든 원격 제어가 가능하다. 또한 환경 데이터를 수집하기 때문에 수집한 데이터를 가지고 현장의 상황을 자세하게 파악 및 분석할 수 있다.



작품 구성도


WebioPi를 이용한 옴니 휠 RC카는 기본적으로 라즈베리파이와 아두이노 환경에서 동작한다.

소형 베이스 판과 옴니 휠로 프로토타입을 제작하여 동작 테스트를 진행하였고, 차후 30 x 30cm 크기의 알루미늄 베이스 판(회로 없는 기판)과 지름 11cm 크기의 옴니 휠을 추가로 제작 주문하여 기본 본체를 구성하였다. 그 위에 온도 센서, 습도 센서, 초음파 센서 그리고 카메라를 장착하여 데이터 수집 및 스트리밍 환경을 제공해주도록 하였다.

수집된 데이터와 카메라 화면은 별도의 안드로이드 앱 옴니 카 컨트롤러 를 통해 확인할 수 있으며, 데이터 개수가 많아지면 변화의 추이를 분석된 그래프 형태로 확인할 수 있다. 분석 툴은 오픈소스를 이용하였으며 데이터는 설정 기능을 통해 저장할 수도 있고 저장하지 않을 수도 있다.

라즈베리파이에는 RC카를 구동하기 위해 작성한 파이썬 코드와 별도의 저장 공간을 위해 설치한 마리아DB가 있고 터미널을 통해 WebioPi와 카메라 스트리밍 환경을 On/Off 할 수 있다.

WebioPi는 라즈베리파이의 GPIO 포트를 원격 제어해주는 웹 및 라즈베리파이 기반의 프로그램으로, Wifi만 연결해주면 어디서든 작동할 수 있다. 이 WebioPi는 HTML과 JavaScript 등으로 구성되어 동작하게 되는데 안드로이드 앱에서는 WebioPi의 JavaScript를 통해 RC카를 동작시키고, 데이터를 받아오는 작업을 한다. 자바스크립트가 일종의 브릿지 역할을 해주는 셈이다.

마지막으로 안드로이드 앱에서는 데이터를 분석해주는 기능을 하는 것뿐만 아니라 다양한 방식으로 RC카를 제어할 수 있도록 한다. 기본적으로 버튼 방식으로 제어할 수 있고 조이스틱과 내장 자이로스코프 센서를 이용한 방식으로도 제어할 수 있다.

이 프로젝트에서는 앱 등록 작업 및 상용화를 목표로 하는 것은 아니었기 때문에 안드로이드 앱은 갤럭시노트8 환경에서만 최적화되어 동작하도록 하였다.



작품의 특징 및 장점


  • 옴니 휠을 이용하여 이동 시 회전 반경이 매우 적다.

  • 원하는 지역에서 주행하며 필요한 데이터를 수집하고 분석할 수 있다.

  • 앱을 이용하여 다양한 방식으로 조작할 수 있다.

  • 네트워크가 갖춰진 곳이라면 어디서든 원격으로 RC카를 조작할 수 있다.

  • 모바일 핫스팟으로도 연결이 가능하며 아이피 변경도 자유롭다.



S/W 개발환경


안드로이드 OS, 라즈비안 / 안드로이드 스튜디오 / Java SDK, 마리아 DB / Java, 자바스크립트, 파이썬



문제점 및 해결 방안


프로젝트 관리 측면에서 보면 중간 보고서 작성 때와 달리 계획 상에 많은 변화가 생겼다. 팀으로 활동하다 보니 서로 간 맞는 시간을 찾는 부분이 가장 어려웠던 것 같고, 기존 일정대로 진행하려고 하기는 했지만 중간중간 발생하는 여러 가지 변수들로 인해 기존 계획에서 제외되거나 연장되는 일이 많았던 것 같다.

작품 개발 측면에서 보면 처음에 부착하고자 하였던 미세먼지 센서와 로봇 팔을 해결하지는 못했다. 여러차례 시도해보았지만 이미 라즈베리파이와 아두이노에서 센서에 대한 여러 개의 선을 처리하고 있었고 소프트웨어적으로도 멀티프로세싱에 대한 처리를 구현하지 못했기 때문에 어려운 점이 많았던 것 같다. 결과적으로 확실한 해결 방안을 찾지는 못했지만 센서와 팔을 부착하지 못한 만큼 나머지 계획했던 부분에서 더 확실하게 구현하고자 많은 노력을 기울였고 나온 결과물에 대해서는 만족하는 편이다.

Author

Alec J

Posted on

2019-11-19

Updated on

2021-02-09

Licensed under