모바일 기기의 발달과 함께 스마트한 기능을 갖는 로봇은 우리 생활에 안전과 편리함을 제공하고 있다. 본 연구에서는 원격 제어가 가능한 모바일 기반 다중 로봇카 시스템을 연구한다. 아두이노를 탑재한 로봇카는 서버에서 제어가 가능하지만, 제어자의 원격 제어가 필요함에 따라 모바일 기기로도 제어가 가능하도록 하였다. 또한 여러 대의 로봇카와 여러 대의 모바일 기기를 이용하여 제어하고자 하는 로봇카를 선택할 수 있어 동시에 여러 로봇카의 제어가 가능하도록 하는 특징을 가지고 있다.
The robot has a smart function with the development of mobile devices and provides safety and convenience to our lives. In this paper, we study multiple robotcar system based on mobile that can be controlled by remote control. Robotcar with arduino can be controlled from server, but it also designed to be controlled by mobile devices as controller's necessary. Besides, it have feature that many robotcars can be controlled at the same time by using several mobile devices which select each robotcar.
로봇의 활용은 갈수록 전문적이고, 다양해지고 있다. 모바일 기기의 발달과 함께 스마트한 기능을 갖는 로봇은 우리 생활에 안전과 편리함을 제공하고 있다[1,2]. 또한 위급한 상황에서 초기대응에 적합하도록 원격 제어가 가능한 로봇도 개발되고 있다. 화재발생이나 지진, 태풍, 쓰나미 같은 급격한 기후변화, 열악한 환경에서도 로봇은 자기 위치를 파악하여 스스로 주행 경로를 결정하며, 움직이는 물체를 추적하는 트래킹 기능 등을 수행한다[3-5]. 이러한 로봇은 위치정보를 제공하는 GPS와 카메라가 탑재된 스마트폰과 원격 로봇기술을 접목하여 화재 발생 , 원전 사고, 가스 누출 등 과 같은 급박한 상황에서 소방관을 투입하기 이전에 정확한 화재 및 가스 누출 사고 현장의 정보와 상황을 파악하도록 구현되었다. 인명 피해를 최소화 하면서 방재 활동을 실시 할 수 있고 정확한 초기 대응으로 피해를 최소화 할 수 있는 전략을 수립 할 수 있도록 도움을 주고있다[6-12].
본 논문에서는 원격 제어가 가능한 모바일 기반 다중 로봇카 시스템을 연구하고자 한다. 아두이노를 탑재한 로봇카는 서버에서 제어가 가능하지만, 제어자의 원격제어가 필요함에 따라 모바일 기기로도 제어가 가능하도록 하였다. 또한 여러 대의 로봇카와 여러 대의 모바일 기기를 이용하여 제어하고자 하는 로봇카를 선택할 수 있어 동시에 여러 로봇카의 제어가 가능하도록 하는 특징을 가지고 있다.
본 논문의 구성은 다음과 같다. 2장에서는 모바일 기반 다중 로봇카 시스템의 구성에 대하여 설명한다. 3장에서는 로봇카의 하드웨어 설계와 모바일 기기의 제어과정을 설계하고, 4장에서는 설계한 시스템을 구현하도록 한다. 마지막으로 5장에서는 본 연구에 대한 결론을 정리한다.
그림 1은 본 논문에서 제시하는 모바일 기반 다중 로봇카 시스템 구성도이다. 시스템 모듈은 로봇카 제어시스템 모듈, 서버 시스템 모듈, 모바일 시스템 모듈로 구성된다.
로봇카 제어 시스템 모듈은 센서를 통해 측정한 계측값을 수치화하여 서버 시스템에 전송한다. 또한, 서버시스템을 통해 센서 제어 신호가 발생하면, 이를 인식하고 로봇카를 직접 구동하는 역할을 수행한다. 서버시스템 모듈은 로봇카 제어 시스템 모듈과 모바일 시스템 모듈간의 데이터 중계 역할을 수행한다. 로봇카 제어 시스템 모듈을 통해 센서의 계측 값을 수신하여 모바일 스마트폰에 재전송하고, 또한 데이터베이스에 이에 대한 내용을 기록하여 추후 로봇카의 상태 변화를 분석 할 수 있도록 한다. 스마트폰를 통해 로봇카의 제어 신호를 받고 이를 다시 로봇카 제어 시스템 모듈에 전송하여 센서를 구동 하게 하는 역할을 수행한다. 또한, 여러 대의 로봇카와 스마트폰을 동시에 관리 할 수 있도록 스레드를 이용해 각자의 기능을 독자적으로 수행해 준다. 로봇카와 스마트폰 사이에서 권한에 따라 각자의 명령과 메시지를 처리할 수 있고, 권한을 부여하거나 제거하는 역할 또한 수행한다. 모바일 시스템 모듈은 클라이언트가 최종적으로 접하게 되는 일종의 터미널 역할을 수행한다. 서버의 데이터베이스 데이터를 통해 스마트폰에게 로봇카의 정보를 표시하거나 변경된 로봇카의 제어 정보를 서버 시스템 모듈에 전송하는 역할도 수행한다.
로봇카에서의 온도센서, 습도센서, 초음파센서, 가스센서는 데이터를 수집하여 와이파이 쉴드를 통하여 서버 시스템으로 전송한다. 서버 시스템은 데이터를 데이터베이스에 저장하여 원격으로 사용할 수 있도록 하며, 추후 재 열람 및 가공할 수 있도록 제공된다. 데이터베이스에 있는 정보들은 서버 시스템으로 전송되어 상시 모니터링을 하게 되며, 모바일로 즉시적인 전송을 함으로써 로봇카의 움직임을 인식한다. 스마트폰은 로봇카의 센서 정보에 의해 로봇카의 움직임과 이동을 인식하고, 위험 상황에 있을 경우를 대비하여 모바일 어플리케이션을 통하여 모바일 기기로 로봇카를 제어하게 된다.
그림 2는 본 연구에서 제안하는 로봇카의 하드웨어 블록도이며, 크게 MCU 부분과 센서 부분으로 구성된다. 마이크로컨트롤러는 ATMEGA2560-16AU를 사용하였으며, 와이파이 쉴드를 탑재하였다. 센서 부분은 온도센서, 습도센서, 초음파센서, 가스센서, 그리고 LCD로 구성하였다.
모바일 시스템과의 데이터 교환 설계는 자바 서버 프로그램을 만들어서 자바 서버와 안드로이드 클라이언트 소켓 통신을 이용하였다. 안드로이드 특성상 안드로이드 데이터베이스는 SQL 데이터베이스보다 가볍기 때문에 직접적으로 서로 데이터를 주고 받을 수가 없다. 소켓 통신을 이용하면 데이터 통신이 가능하고 자바 서버 프로그램 또한 데이터베이스와 통신이 가능하게 된다. 그림 3은 자바와 안드로이드간의 통신 설계를 나타내었다.
서버에서는 ServerFP와 ServerThreadFP 클래스를 생성한다. ServerFP 클래스는 서버 소켓으로 클라이언트 소켓을 받을 준비를 하고 ServerThreadFP 클래스 변수를 받아 스레드를 시작한다. ServerThreadFP 클래스는 Run() 함수가 반복적으로 클라이언트 소켓을 체크한다. Run() 메소드에서 받은 메시지를 통하여 DB_control 변수로 데이터베이스에 접근하고 데이터를 받아온 후 sendMessage() 함수를 통해 메시지를 전달한다. 이 때 전송하는 데이터들은 모두 스트링 형태로 보내진다. DB_control 클래스는 DB_control() 함수로 데이터베이스에 접근한다. SetConnection() 함수로 접속 성공 여부를 확인하며, EndConnection() 함수는 접속종료를 뜻한다. 나머지 함수는 선택적으로 데이터를 받아오거나 수정하는 역할을 수행한다.
안드로이드 클라이언트는 Splash 클래스, ThreadFP클래스, SmartRobotCar클래스로 구성되었다. Splash 클래스는 처음 화면에 3초간 뿌려지는 이미지이다. ThreadFP 클래스는 소켓을 이용하여 입력스트림과 출력스트림의 데이터를 주고받는 역할을 수행한다. ReceiverService() 함수를 통하여 서버 데이터를 받고 SendService() 함수를 통하여 데이터를 전송한다. SmartRobotCar 클래스는 우선적으로 메인 클래스라고 할 수 있다. ThreadFP 클래스 변수를 선언하여 소켓을 실행하고 뷰플리퍼를 이용하여 화면에 이미지를 보여주고 버튼 등의 선언으로 버튼과 입력하는 역할을 한다. onCreate()를 실행하면 프로그램이 시작된다. 핸들러를 통하여 받은 메시지를 확인한 후 그에 할당된 메시지를 소켓을 통해 보내게 된다.
로봇카 시스템에서의 데이터 교환을 위한 통신 프로토콜은 표 1과 같다. 모든 명령어의 시작과 종료를 알리는 문자로 @와 #을 사용한다. 예를 들어 온도 센서 값 30도를 로봇카에서 서버 시스템으로 전달하는 정보는 @TMP,30# 형식으로 전달되고, 반대로 서버 시스템에서 로봇카로 온도 임계치 값 25도로 설정하려면 @TTH,25# 형식으로 전달된다. 로봇카의 이동 정보 @MOV,1#은 앞으로의 이동을 뜻하고, @MOV,3#은 왼쪽으로 회전 동작을 수행한다.
로봇카 시스템의 통신 프로토콜
로봇카의 제어는 서버에서 아이디와 패스워드를 입력한 후 인증되어야만 접속이 가능하다. 서버에서는 통신을 설정하는 입력란을 통하여 IP주소와 컴퓨터 포트번호를 입력한다. 로봇카 서버 시스템 뷰에서는 다중 로봇카들의 환경에 대한 센서와 상태를 모니터링 및 제어할 수 있다. 그림 4는 로봇카 서버 시스템 뷰를 나타내고 있다.
서버의 연결 상태에 관한 정보를 왼쪽에서 보여주고 있다. 데이터 갱신 시, 우측 상단의 체크박스를 이용하여 다중 로봇카 중에 하나를 선택한다.
선택된 로봇카의 센서에 의해 읽혀진 값들이 레이블 형태로 속도, 온도, 습도, 가스 센서 값을 표시해 준다. 입력란은 선택된 로봇카의 센서 값을 설정하는데 사용한다. 로봇카의 이동은 방향키로 제어하여 이동 방향을 지시한다.
모바일 시스템을 실행하면 처음에 자연스러운 화면전환을 위하여 어플리케이션 실행 후 스프래쉬 뷰가 출력된다. 3초 후 스프래쉬 뷰가 사라지면 로그인 화면으로 바뀐다. 로그인이 승인 된 후 접속 버튼을 클릭하면 서버로 연결이 되고, 로봇카의 정보를 수신하여 확인할 수 있다(그림 5).
그 상태에서 로봇카 목록 중 하나를 선택하면, 선택된 로봇카의 센서 값은 표시되어지고 +, - 버튼을 클릭하여 센서의 설정 값을 변경할 수 있다. 화살표 버튼을 이용하여 로봇카의 이동 방향을 제어한다.
본 논문에서 제안하는 모바일 기반 다중 로봇카 시스템은 다중 로봇카의 즉시적인 변화를 인식하여 원격 제어를 할 수 있도록 구축하였다. 웹을 이용한 단일 로봇카 시스템은 실시간으로 제어가 가능하지만, 사용 장소에 제한적이고 단일 로봇의 제어라는 단점이 있었다. 이를 해결하기 위하여 여러 개의 모바일 기기를 이용한 여러 개의 로봇카를 제어할 수 있는 유용성을 강조하였다. 본 논문에서 구현한 시스템은 사용자 위주의 편리함과 물리적인 활동 공간을 동적으로 활용할 수 있도록 함으로써 필요할 때 바로 제어가 가능하도록 하고 있다. 다중 로봇카 시스템은 원격 제어가 가능하도록 구축함으로써 극한 상황에서도 안정적으로 작업을 진행시킬 수 있을 것으로 기대된다. 사용자는 모바일 기기를 이용하여 로봇카의 상황을 실시간으로 확인이 가능하며, 로봇카 환경에 대한 조건을 정하여 기능을 유지할 수 있다. 또한 로봇카 운영 데이터는 데이터베이스에 저장되어 추후 확인할 수 있도록 하였다.