Korean Institute of Information Technology

Home

The Journal of Korean Institute of Information Technology - Vol. 17 , No. 2

[ Article ]
The Journal of Korean Institute of Information Technology - Vol. 17, No. 2, pp. 33-43
Abbreviation: Journal of KIIT
ISSN: 1598-8619 (Print) 2093-7571 (Online)
Print publication date 28 Feb 2019
Received 17 Dec 2018 Revised 07 Feb 2019 Accepted 10 Feb 2019
DOI: https://doi.org/10.14801/jkiit.2019.17.2.33

ROS를 활용한 서빙 이동로봇의 구현
김의선* ; 김범수* ; 김익상**
*배재대학교 정보통신공학과
**배재대학교 정보통신공학과 교수(교신저자)

Implementation of Serving Mobile Robot Using ROS
Ui-Sun Kim* ; Beom-Su Kim* ; Ik-Sang Kim**
Correspondence to : Ik-Sang Kim Dept. of automated system, Chosun University College of Sience & Technology, Pilmundaero, Donggu, Gwangju, 61453, Korea. Tel.: +82-62-230-7064, Email: netpius@nate.com


초록

ROS(Robot Operating System) 메타운영체제는 다양한 운영체체 상에 설치하여 로봇 개발을 쉽게 하는 개발 환경을 제공한다. ROS는 로봇을 구성하는 다양한 하드웨어 모듈에 대한 드라이버 프로그램들을 제공하고, 또한 로봇 동작에 필요한 다중 프로세스들 간에 TCP-IP 소켓 메시지 통신을 통해 연동할 수 있도록 한다. Ubuntu 16.04 버전의 OS에 ROS Kinetic Kame 버전을 설치해서 음성 인식된 목적지로 이동하는 서빙 이동로봇을 구현했다. 먼저 ROS에서 지원하는 SLAM(Simultaneous Localization And Mapping)에 의한 지도 작성 프로세스를 구동하여 로봇을 이동시키면서 위치 및 LiDAR 센서로 주변 장애물들에 대한 거리를 측정함으로써 지도를 작성한다. 이 지도를 토대로 ROS에서 지원하는 자율주행 프로세스를 구동하고, 음성인식에 의한 목적지를 설정하는 파이썬 프로그램에 의해 출발지로부터 목적지까지의 경로를 설정하고 Kobuki 이동체의 2개 구륜모터를 제어함으로써 목적지까지 자율주행하게 된다.

Abstract

A meta-operating system ROS(Robot Operating System) installed on various operating systems provides the environment to develop robots easily. It supports the driver programs for hardware modules in robots to be controlled and makes the interaction between multi-processes for robot operations through TCP-IP socket communication. The serving mobile robot, where ROS Kinetic Kame version is installed on Ubuntu 16.04 OS, has been implemented to move toward the goal position which is recognized in speech. First, a map is obtained by executing SLAM(Simultaneous Localization And Mapping) ROS process which measures distances from obstacles by LiDAR sensor as well as the position as the robot is moving. Based on the map, ROS autonomous navigation process is executed to plan the path from initial position to the goal position with speech recognition which is implemented with python program and then makes the robot autonomously move by driving both of wheel motors of Kobuki mobile base.


Keywords: ROS, autonomous robots, SLAM, path planning, speech recognition

Ⅰ. 서 론

주변 환경을 인지하면서 주행하는 실내 이동로봇은 병원 건물 내에서의 물류 이동이나 휠체어 환자 이동, 쇼핑몰에서의 고객을 따라다니는 카트, 도서관에서의 책 정리하는 사서 로봇, 보안 지키미 로봇 등에서 활용할 수 있다. 국내에서만도 LG전자의 Airstar는 인천공항에서 마커를 활용하여 측위를 하면서 다니는 안내 자율주행로봇이고, SAVIOKE 호텔 서빙 로봇, Naver의 around M1 서점 도우미 로봇 등이 활용되고 있다[1][2].

실내 이동로봇은 실내 측위와 주변 환경에 대한 인지를 해야 하는데 실내 측위에 대한 여러가지 기술들이 있다. 이러한 측위 기술을 이용한 사례로서 StarGazer 로봇용 측위 센서를 사용하여 천정의 landmarker로 사용해서 측위하거나, 실내 GPS나 WiFi, beacon 등을 이용하여 삼각 측량으로 측위한다[3].

실내 이동로봇의 경우 가장 필수적인 SLAM(Simultaneous Localization And Mapping)은 동시 측위하면서 지도를 측량하는 기술이다. 이를 위해 레이저 펄스를 방사해서 되돌아 온 시간으로 주변 장애물의 거리를 측정하는 LiDAR(Light Detection And Ranging) 센서와 측위를 통해 자율주행을 위한 지도를 작성하게 된다. 측위의 불확실성을 극복하기 위해 칼만 필터, 파티클 필터를 활용한 Montecarlo 측위 등의 신호처리 방식을 사용한다[4][5]. 지도 작성 알고리즘은 파티클 필터에 의해 보정된 격자지도(PGM, Particle filtered Grid Map)가 있고, 가장 많이 사용되는 것이 점유격자지도(OGM, Occupancy Grid Map)이다[6][7].

지도 정보를 바탕으로 출발지와 목적지까지의 경로설정 및 자율주행은 가장 초기에 고려된 Djikstra의 최단 거리 visibility graph, A* 알고리즘, D* 알고리즘, RRT(Rapidly-exploring Random Trees), DWA(Dynamic Window Approach), Potential Field 등의 다양한 알고리즘에 따라 할 수 있다[8][9].

로봇 개발을 위해 제공되는 개발환경들은 다양한데 그 가운데 ROS(Robot Operating System)는 로봇을 구성하는 다양한 센서 탐지 및 구동부 제어를 위한 프로그램 패키지들을 제공한다. 복잡한 로봇 동작들을 위해 다중 프로세스들을 관리하고 연동할 수 있도록 함으로써 여러 개의 로봇 간에 협업도 가능하다[10]. TF 라이브러리를 이용해 여러 좌표 프레임 간 실시간 좌표변환 데이터를 제공함으로써 자세제어를 용이하게 한다[11].

본 논문에서는 유진로봇 사의 Turtlebot 2계열의 Kobuki 이동체를 사용하고 Nvidia사의 Jetson TX2 보드를 주제어 컴퓨터로 해서, 여기에 LINUX Ubuntu 16.04 버전 운영체제 상에 ROS Kinetic Kame 버전의 메타운영체제를 설치해서 목적지를 말하면 음성인식 과정을 통해 해당 목적지로 이동하는 서빙 이동로봇을 구현했다. 이를 위해 ROS에서 지원하는 SLAM에 의한 지도 작성 프로그램 패키지를 사용하여 로봇을 이동시키면서 측위 및 LiDAR 센서로 주변 장애물들에 대한 거리를 탐지함으로써 지도를 작성한다. 이 지도를 토대로 ROS에서 지원하는 자율주행 프로그램 패키지를 사용하여 출발지로부터 목적지까지의 경로를 설정하고, Kobuki 이동체의 2개 구륜모터들에 대해 회전속도를 제어함으로써 병진속도 및 회전각속도를 조정하여 목적지까지 이동하게 된다. 경로설정을 위해 주제어 컴퓨터인 Jetson TX2 보드에 연결된 TFT-LCD 터치스크린을 먼저 터치하고 마이크에 목적지 위치를 가령 “302호”와 같이 말한다. 이에 대한 음성파일을 만들고 이 음성파일을 ETRI(한국전자통신연구원) Open AI 서버로 보낸 다음 인식된 텍스트 데이터를 받는다. 텍스트 데이터에서 “호” 앞 부분의 방 번호를 식별하여 해당 방 번호에 맞는 지도 상의 위치를 자율주행 프로세스에게 토픽메시지로 보내어 목적지 경로를 설정하게 된다.

2장에서는 ROS의 주요 내용 및 이동로봇의 SLAM과 자율주행에 대한 원리들에 대해 논한다. 3장에서는 실제 구현한 서빙 이동로봇의 구조, 구현 과정, 동작 실험에 대해서 논한다. 4장 결론에서는 본 논문의 주요 결과 요약, 향후 개선할 연구 및 기대 효과에 대해서 논하고자 한다.


Ⅱ. 서빙 이동로봇 구현을 위한 기반 기술들
2.1 ROS

ROS는 로봇 개발을 편리하게 하고 관리 및 운용할 수 있도록 다양한 운영체제에서 설치되어 하드웨어의 가상화, low level 장치 제어, 인터넷이 연결된 이기종 컴퓨터의 프로세스들 사이에서 TCI-IP 메시지 통신을 통한 분산 컴퓨팅 환경, 로봇을 구성하는 다양한 하드웨어 모듈들의 동작 제어에 필요한 응용프로그램 패키지들을 제공한다. 이 외에 3차원 시뮬레이터인 Gazebo, 시각화 도구인 Rviz, GUI 도구 모음 RQT 등의 유틸리티 들이 필요하다.

ROS는 topic, service, action service와 같은 분산처리 환경들을 제공하는데 가장 많이 사용되는 것이 topic 메시지를 통해 publisher와 subscriber로 구성된 두 노드 프로세스간에 TCP-IP 소켓 통신을 하도록 함으로써 연동하게 된다.

그림 1에서 보는 것처럼 원격키 노드 프로세스인 teleop_turtle 노드는 키보드의 방향키를 통해 움직임을 제어하고자 하는 publisher 노드이고, 반면에 turtlesim 노드는 이 방향키 제어신호를 받아 윈도우 안의 거북이 객체가 움직이게 하는 subscriber 노드이다. 이를 위해서 연동하려는 노드들은 마스터 노드 프로세스에게 그림 1의 (1)과 같이 자신의 IP 및 포트, 토픽메시지 이름과 메시지 유형의 정보를 보낸다. (2)와 같이 마스터 노드는 동일한 토픽메시지를 요청하는 노드들에게 통신하고자 하는 상대방 노드의 IP 및 포트 정보를 넘겨 주면, (3)과 같이 이들 간에 소켓 통신을 하도록 하는 것이다.


Fig. 1. 
Interaction between node processes by a topic message

로봇을 구성하는 컴퓨터들은 각각 .bashrc shell 스크립트 파일에 마스터 노드가 되는 컴퓨터의 IP 및 포트 정보의 환경설정을 한다. 이제 마스터 노드가 되는 컴퓨터에서는 터미널을 열어「roscore」ROS shell command를 사용해서 마스터 노드 프로세스를 구동한다. 연동하는 두 노드 프로세스들을 동작시키려면 터미널을 열어「rosrun」ROS shell command를 통해 구동한다. 특히 RQT 유틸리티는 현재 로봇에서 일어나는 모든 노드 프로세스들 간의 연동되는 모습을 graph의 형태로 노드 이름과 토픽메시지 이름을 표시해서 보여 준다.

이와 같이 ROS 환경에서 로봇 동작을 위해 연동되는 노드 프로세스들을 위한 패키지들이 ROS 관련 git-hub에서 많이 제공되어 쉽게 복사 해서 컴파일하거나 linux의 apt-get 설치 shell command를 사용하여 설치할 수 있다. 로봇 동작을 위한 패키지들은 로봇에 사용되는 특정 제조사의 특정 모델 하드웨어 모듈을 구동하거나, SLAM에 의한 지도 작성, 자율주행과 같이 로봇 제어 등을 위한 ROS 응용프로그램으로서 제공된다. ROS 버전, 구동할 로봇 이동체 사양, 하드웨어 모듈의 사양 등에 따라 적합한 패키지들을 선택해야 한다.

2.2 지도 작성과 자율주행

이동로봇은 먼저 이동하면서 LiDAR 또는 depth 카메라와 같은 거리 센서들을 사용하여 주변 장애물들을 탐지하고 측위 과정을 거치면서 지도를 작성한다. 그 다음에 이 지도를 바탕으로 원하는 목적지까지 경로를 설정해서 자율주행하도록 해야 한다.

먼저 측위 과정에 있어서 그림 2에서 보는 것처럼 k 시점에서 로봇이 2차원 x-y에서의 위치 및 그 위치에서의 방향각으로서 (xk, yk, θk)과 같이 표현할 수 있다. 이 때 로봇의 좌우바퀴 엔코더(Encoder) 회전속도 센서를 통해 탐지된 좌우바퀴의 회전각속도 ωklωkr과 바퀴의 반경 r, 바퀴사이의 거리 D로부터 k 시점에서의 로봇 병진속도 υk 및 로봇 회전각속도 ωk 를 각각 식 (1)식 (2)와 같이 구할 수 있다. υkωk로부터 t 시간 지난 k+1 시점에서의 이동거리 θk 및 방향회전각 sk 구할 수 있고, 이로부터 k+1 시점에서의 위치 및 방향각(xk+1, yk+1, θk+1)을 식 (3)과 같이 구함으로써 측위할 수 있다.


Fig. 2. 
Position measurement and driving of a robot with two wheels

그러나 회전속도 센서의 오차나 또는 회전속도 탐지가 올바로 탐지 되더라도 바퀴의 미끄러짐이나 마찰 등으로 인해 실제 이동한 거리는 달라질 수 있을 뿐만 아니라 매우 작은 오차라 할지라도 주행하면서 누적되는 측위 오차는 커질 수 밖에 없다. 이러한 의미에서 매 구간마다 측위 오차에 대한 확률적 통계를 측정해서 보정해 줄 필요가 있고 앞서 언급한 것처럼 칼만 필터 등의 통계적 알고리즘을 사용해서 보정한다[4]. 이동로봇이 LiDAR와 같은 거리 센서를 통해 주변 장애물에 대한 거리 탐지로부터 측위 보정을 더욱 잘 할 수 있고 보다 더 정확한 지도를 작성하게 된다.

υk=skt=υkr+υkl2=rωkr+ωkl2(1) 
ωk=θkt=υkr+υklD=rωkr+ωklD(2) 
xk+1=xk+υktcosθk+ωkt, yk+1=yk+υktsinθk+ωkt,(3) 
θk+1=θk+ωkt 

이제 로봇에 지도를 갖춘 상태에서 목적지 좌표를 정하면 출발지로부터 목적지까지의 이동 경로를 경로설정 계산 알고리즘에 따라 계산해서 2개 구륜모터를 구동함으로써 자율주행 하도록 해야 한다. 설정된 경로에 따라 t 시간마다 k 시점에서 다음 k+1 시점에서의 이동거리 sk 및 방향회전각 θk이 주어지고 이로부터 모터의 회전속도를 구해서 이에 맞는 듀티(Duty)비의 디지털 신호인 PWM (Pulse Width Modulation)를 좌우바퀴 모터에 가한다. 자율주행 하는 동안에도 끊임없이 엔코더, IMU (Inertia Measurement Unit), depth 카메라와 같은 여러 센서들을 사용하여 측위해 가면서 설정된 경로로부터의 이탈을 수시로 점검해서 다시 보정된 경로를 따라 가도록 해야 한다.


Ⅲ. ROS를 활용한 서빙 이동로봇의 구현
3.1 서빙 이동로봇의 구조

그림 3과 같이 주제어 컴퓨터와 이동체로 구성된 로봇은 이동해야하기 때문에 원격터미널 컴퓨터를 사용하여 WiFi를 통해 로봇에 필요한 프로그램 개발, 설치, 실행, 모니터링, 및 수동 제어를 하게 된다. 또한 음성인식을 위해 ETRI 서버를 활용한다.


Fig. 3. 
Structure of the implemented serving mobile robot

로봇의 주제어 컴퓨터에는 LiDAR 및 depth 카메라가 연결되어 주변의 장애물에 대한 거리를 탐지하고 로봇 이동체 바퀴의 회전 센서인 엔코더를 통해 측위함으로써 지도파일을 생성한다. 이 지도파일을 토대로 목적지에 대해 ETRI 서버를 활용하여 음성인식하고 최적의 주행경로를 계산하여 이동체의 모터를 제어하여 목적지까지 주행하도록 한다.

그림 3에서 원격터미널 컴퓨터는 로봇의 주제어 컴퓨터에 WiFi로 접속하여 원격터미널을 사용해 로봇에 필요한 프로그램 개발, 설치 및 실행을 한다. 또한 Rviz 프로그램을 사용하여 주제어 컴퓨터로부터 LiDAR, depth 카메라 및 측위 데이터를 받아 2차원 지도 안에서의 로봇의 위치를 보여 준다. 지도 작성할 때 로봇이 돌아다니면서 측위 및 장애물 탐지를 해야 하기 때문에 원격터미널 컴퓨터의 키보드를 사용하여 로봇에 대해 주행제어를 하게 된다. 원격터미널 PC는 RQT 프로그램을 사용하여 로봇의 주제어 컴퓨터 및 원격터미널 컴퓨터에서 실행되는 ROS 노드 프로세스들 간에 연동되는 모습을 그래프로 확인해 볼 수 있다.

주제어 컴퓨터는 Nvidia사의 Jetson TX2로서 Pascal 계열의 256 코아 GPU가 내장된 인공지능 용도의 개발을 위한 하드웨어 플랫폼이다. 주제어 컴퓨터에는 지도 작성 할 때 주변 장애물 인지를 하거나 자율주행 할 때 지도상의 위치를 측정하기 위해 거리 센서로서 Intel사의 RealSense LR200의 depth 카메라와 Yuedeng사의 YDLIDAR X4의 LiDAR를 USB로 연결해서 사용한다.

또한 7 inch IPS(In-plain switching) 방식의 TFT-LCD를 HDMI 포트에 연결해서 터치스크린으로서 사용한다. TFT-LCD는 목적지 설정하기 위해 마이크를 통해 들어온 음성을 녹음하고 파일을 생성해서 ETRI 서버로 전송하도록 GUI 환경을 제공하고 또한 상황에 따른 재미난 눈표정을 보여준다.

로봇의 이동체는 유진로봇 사의 Turtlebot2 계열의 Kobuki를 사용하고, 로봇의 주제어 컴퓨터로부터 USB 포트를 통해 주행제어 신호를 받아 2개의 구륜 DC 모터를 구동하게 되고, 2개 모터의 엔코더 센서들로부터 모터의 회전속도 및 IMU 센서로부터 각속도 및 가속도 센서값을 주제어 컴퓨터로 보냄으로써 측위에 사용된다. 또한 배터리가 임계전압 아래로 떨어졌을 때 적외선 센서열에 의해 근처의 배터리 충전 도커(Docker)를 찾아 가서 충전하도록 되어 있다. 초음파 센서는 바닥면 아래 쪽을 향하고 있어 주행면 상에 절벽이나 높은 둔턱이 있으면 자동적으로 멈추게 한다. 이와 같이 동작을 하도록 Kobuki의 콘트롤러 보드인 아두이노 안의 플래시 ROM에 펌웨어 프로그램이 구성되어 있다.

그림 3의 중간의 형상이 이러한 부품들을 조립하고 3D 프린터 및 일부 금형을 통해 외장을 만든 서빙 이동로봇의 모습이다.

3.2 서빙 이동로봇의 패키지 설치 및 구동

이동로봇을 구동하기 전에 표 1과 같이 로봇의 주제어 컴퓨터 및 원격터미널 컴퓨터에 필요한 패키지들을 설치한다. 가상환경에서 모의실험을 할 수 있도록 ROS에서는 Gazebo를 지원한다. 원격터미널 컴퓨터에서 이 프로그램을 구동해서 가상의 Kobuki 이동체 모델에 대해 SLAM에 의한 지도 작성이 제대로 되는지 그리고 완성된 지도를 통해 경로 설정된 목적지로 제대로 자율주행이 되는지를 모의실험을 통해 어느 정도 확인해 볼 수 있다.

Table 1. 
Installation of packages
packages shell commands Related programs
Kinetic Kame
ROS
$ wget
https://raw.githubusercontent.com/ROBOTIS-GIT/robotis_tools/master/install_ros_kinetic.sh
$ chmod 755 ./install_ros_kinetic.sh
$ ./install_ros_kinetic.sh
Gazebo simulator, teleop key, SLAM, and navigation.
Kobuki $ sudo apt-get install kobuki_* Kobuki mobile driver
Rviz $ sudo apt-get install ros-kinetic-rviz Rviz
RQT $ sudo apt-get install ros-kinetic-rqt RQT
Yuedeg
LiDAR
$ cd~/catkin_ws/src
$ git clone https://github.com/EAIBOT/ydlidar.git
$ cd ..
$ catkin_make
Yuedeng LiDAR driver

모의실험이 제대로 확인되면 관련된 노드 프로세스들을 모두 종료하고, 그림 4에서와 같이 지도 작성을 위해 원격터미널 컴퓨터 및 주제어 컴퓨터가 터미널에서 ROS shell command를 사용하여 각각 필요한 노드 프로세스들을 구동한다. 특히 원격모니터 컴퓨터에서는 SSH 원격터미널을 통해 주제어 컴퓨터에 필요한 패키지 설치 및 노드 프로세스들을 구동한다. 원격터미널 컴퓨터에서는 원격키 노드 프로세스를 통해 로봇을 이동시키면서 Rviz 노드 프로세스를 통해 로봇이 지도 작성하는 모습을 관측할 수 있다.


Fig. 4. 
Execution of ROS node processes for mapping by SLAM

주제어 컴퓨터에서는 먼저 Kobuki 이동체 및 LiDAR 노드 프로세스를 구동한다. SLAM 노드 프로세스에 의해 LiDAR 센서를 사용해 주변 장애물들에 대한 거리 측정과 바퀴 엔코더 센서를 사용한 측위를 통해 보정 작업을 하면서 지도 작성을 시작한다. 측정 영역의 지도 작성이 끝나면 지도저장 노드 프로세스를 구동해서 파일 저장하고 종료한다. 여기서 파티클 필터에 의해 보정된 격자지도인 PGM Gmapping을 사용한다.

그림 5에서 타원형은 구동된 노드 프로세스들의 이름이고 이들 간의 연동이 화살표로 표시되어 있다. 화살표 위의 박스 안에 토픽메시지 이름이 나와 있고, 원격터미널 컴퓨터, 주제어 컴퓨터, Kobuki 이동체로 구분되어 그 안에서 노드 프로세스들이 연동하고 있음을 볼 수 있다. 이와 같은 개념적인 그래프는 이해 도모를 위한 것이고 실제에 가까운 Gazebo 모의실험에서 연동되는 노드 프로세스들에 대한 RQT에서 표시된 모습은 그림 6과 같다.


Fig. 5. 
Conceptual graph of interactions of node processes in mapping by SLAM


Fig. 6. 
RQT graph of interactions of node processes in the simulation of mapping by SLAM

그림 7에서와 같이 정보과학관 3층의 복도를 따라 원격터미널 컴퓨터에서 키보드로 로봇을 이동시켜 가면서 SLAM에 의해 생성된 PGM(Particle filtered Grid Map)지도의 Rviz에서 보여진 모습은 그림 8과 같다.


Fig. 7. 
Photograph of the 3rd floor of Informatic Science Hall


Fig. 8. 
PGM map shown in Rviz utility

지도 작성을 한 후에 관련된 해당 노드 프로세스들을 모두 종료하고, 그림 9에서와 같이 경로설정 및 자율주행을 위해 원격터미널 컴퓨터 및 주제어 컴퓨터가 터미널에서 ROS shell command를 사용하여 각각 필요한 노드 프로세스들을 구동한다. 원격모니터 컴퓨터에서는 SSH 원격터미널을 통해 주제어 컴퓨터에 필요한 패키지 설치 및 노드 프로세스들을 구동한다. 원격모니터 컴퓨터의 Rviz에서 2차원 지도 상에 로봇의 위치가 표시되는데, depth 카메라에 의해 Rviz에 나타난 장애물의 프로파일과 지도 상의 프로파일을 일치시켜 로봇의 지도 내 위치를 보정한다.


Fig. 9. 
Execution of ROS node processes for path planning and autonomous moving

이제 지도를 사용하여 음성인식을 통해 얻어진 목적지를 지정하면 경로설정을 계산하고 이로부터작은 구간으로 나눠 병진속도 및 각속도를 Kobuki 이동체로 넘겨줘서 2개 구륜모터의 회전속도를 제어함으로써 목적지까지 자율주행 하게 된다. 그림 10은 자율주행을 위해 구동된 노드 프로세스들 간의 연동에 대한 개념을 보여 준다.


Fig. 10. 
Conceptual graph of interactions of node processes in autonomous moving

주제어 컴퓨터에는 파이썬 프로그램에 의해 TFT- LCD에 다양한 눈표정을 디스플레이 하고 터치하면 목적지를 얘기하라는 메시지와 함께 마이크에 가령 “302호”와 같이 목적지를 얘기하면 음성 인식되어 해당 목적지로 자율주행 하도록 한다. 음성인식을 위해 ETRI에서 제공하는 음성인식 REST API를 사용하는데 이를 위한 허용키가 필요하며, 「http://aiopen.etri.re.kr/key_creation.php」에서 신청하고,「http://aiopen.etri.re.kr/key_check.php」에서 허용키를 확인할 수 있다. 샘플링 주파수 16kHz로 녹음된 음성파일을 Base64로 encoding한 다음, HTTP 통신으로 ETRI Open AI 서버인 「http://aiopen.etri.re.kr:8000/WiseASR/Recognition」로 JSON 메시지에 담아 전송하고, 음성 인식된 텍스트 JSON 메시지로부터 “호” 앞의 방 번호인 “302”라는 목적지를 알아낸다. 해당 목적지의 지도 상의 좌표값을 토픽메시지로 해서 자율주행 노드 프로세스에게 전달한다. 이를 위해 「rostopic pub–1/move_base_simple/goal geometry_msgs/PoseStamped + “목적지 위치좌표” 」와 같은 ROS shell command 시스템 호출을 함으로써 해당 목적지로 자율주행 해 가도록 하는 것이다.


Ⅳ. 결론 및 향후 과제

노트북 원격터미널 컴퓨터의 키보드로 Jetson TX2 주제어 컴퓨터에 연결된 Kobuki 이동체에 대해 주행 제어 하면서 LiDAR를 통해 장애물까지의 거리를 측정하고 측위함으로써 지도 작성을 한다. 이를 위해 원격터미널PC는 SSH 원격터미널로 주제어 컴퓨터에 접속해서 필요한 ROS 패키지를 설치하고 구동한다. 작성된 지도를 토대로 목적지를 음성으로 말하면 목적지까지 자율주행해 가도록 마찬가지로 필요한 ROS 패키지를 설치하고 구동한다. 여기에는 SLAM이라고 하는 측위 및 지도 작성에 대한 보정 알고리즘이 필요하고 자율주행 역시 목적지 경로설정에 대한 알고리즘이 중요한 기술이다. 또한 음성인식은 기계 학습된 음성인식 시스템이 필요한데 전자통신연구원 서버를 활용했다. 특히 이와 같은 로봇 동작은 마스터 노드 프로세스의 중앙 제어를 통해 노드 프로세스들간 연동에 의해 이루어지는 것이고 RQT graph를 사용해서 그들 간의 연동을 살펴보았다.

본교의 정보과학관 3층 복도에서 지도 작성 및 자율주행을 수행했다. 자율주행 과정에서 depth 카메라에 의해 근접 장애물이 포착될 경우의 동작에 있어 문제점이 발견되었는데 이를 해결하기 위해 Kobuki ROS에서 지원하는 C++ class를 활용하여 ROS topic 패키지를 설계할 필요가 있다. 또한 단순히 목적지로의 이동뿐만 아니라 인공지능형 안내 서비스 기능을 부가하고, 더 나아가 광범위한 실내 주행을 위한 마커를 활용한 실내 측위를 활용할 계획이다.


References
1. Savioke, http://www.savioke.com. [accessed: Nov. 05, 2018]
2. Naver labs around M1 robot : Naver labs, http://www.naverlabs.com. [accessed: Nov. 05, 2018.
3. H. S. Ahn, J. Y. Lee, W. P. Yu, and K. S. Han, "Indoor Localization Technique for Intelligent Robotic Space", Electronics and Telecommunications Trends, 22(2), p48-57, Apr., 2007.
4. S. Thrun, W. Burgard, and D. Fox, "Probabilistic robotics", MIT Press, p245-265, Aug., 2005.
5. C. Cadena, L. Carlone, H. Carrillo, Y. Latif, D. Scaramuzza, J. Neira, I. Reid, and J. J. Leonard, "Past, Present, and Future of Simultaneous Localization and Mapping: Toward the Robust-Perception Age", IEEE Transactions on Robotics, 32(6), p1309-1332, Dec., 2016.
6. G. Grisetti, C. Stachniss, and W. Burgard, "Improved techniques for grid mapping with Rao-Blackwellized particle filters", IEEE Transactions on Robotics, 23(1), p34-46, Feb., 2007.
7. S. Thrun, W. Burgard, and D. Fox, "Probabilistic robotics", MIT Press, p221-242, Aug., 2005.
8. M. Kothari, and I. Postlethwaite, "A Probabilistically Robust Path Planning Algorithm for UAVs Using Rapidly-Exploring Random Trees", Journal of Intelligent & Robotic Systems, 71(2), p231-253, Aug., 2013.
9. D. Fox, W. Burgard, and S. Thrun, "The dynamic window approach to collision avoidance", IEEE Robotics & Automation Magazine, 4(1), p23-33, Mar., 1997.
10. Y. S. Pyo, H. C Cho, R. W. Jung, and T. H. Lim, "ROS robot programming", Rubypaper, p225-229, Aug., 2017.

저자소개
김 의 선 (Ui-Sun Kim)

2017년 2월 : 중부대학교 정보보안학과(수료)

2018년 3월 ~ 현재 : 배재대학교 정보통신공학과 (학사 과정)

관심분야 : 인공지능형 웹서비스 플랫폼, 이동 로봇, 사물인터넷

김 범 수 (Beom-Su Kim)

12018년 3월 ~ 현재 : 배재대학교 정보통신공학과 (학사 과정)

관심분야 : 가상현실 및 증강현실, 이동 로봇, 사물인터넷

김 익 상 (Ik-Sang Kim)

1984년 2월 : 한양대학교 전자통신공학과(공학사)

1986년 2월 : 한양대학교 전자통신공학과(공학석사)

1995년 8월 : Texas A&M University, Electrical Engineering (Ph.D)

1987년 5월 ~ 1990년 6월 : 금성반도체 전자교환기

1995년 4월 ~ 1997년 2월 : 한국통신 광전송망

1997년 3월 ~ 현재 : 배재대학교 정보통신공학과 교수

관심분야 : 인공지능형 웹서비스 플랫폼, 이동 로봇, 사물인터넷, 5G 이동통신