로봇신문사
> 오피니언 > 전문가코너
로봇 오퍼레이팅 시스템박홍성 강원대학교 전자통신공학과 교수
폰트키우기 폰트줄이기 프린트하기 메일보내기 신고하기
승인 2016.02.12  10:51:48
트위터 페이스북 구글+ 밴드

일반적으로 오퍼레이팅 시스템이라고 함은 PC의 윈도우즈 혹은 리눅스와 같이 컴퓨터의 HW와 SW를 효율적으로 사용하고 사용자에게 편리성을 제공하여 주는 시스템 소프트웨어이다. 안드로이드도 스마트폰의 오퍼레이팅 시스템이라고 말하지만, 오퍼레이팅 시스템은 아니고 리눅스 상에서 동작하는 응용 소프트웨어의 하나이며, 정확하게 말하자면 미들웨어의 일종이다. 미들웨어는 일반 오퍼레이팅 시스템(예, 리눅스, 윈도우즈 등)과 응용 소프트웨어간을 연결해주는 소프트웨어이고, 안드로이드 및 자바 가상기계도 미들웨어의 예이다.

즉, 리눅스 상에서 응용 소프트웨어들을 개발하기 위해서는 전문가 수준을 요구하고 있기 때문에, 스마트 폰 앱들의 확산에 큰 장애물이 된다. 이러한 장애물들을 제거하고 앱들의 개발과 활용을 극대화하기 위해 앱들의 개발을 도와주는 개발도구를 포함하여 스마트폰의 HW 및 SW들을 효율적으로 활용할 수 있도록 안드로이드가 개발된 것이다. 따라서 사용자 및 앱 개발자 입장에서 HW 및 SW와 같은 자원을 효율적으로 활용하여 주는 기능을 제공하기 때문에 안드로이드도 오퍼레이팅 시스템이라 할 수 있다.

로봇 오퍼레이팅 시스템 역시 같은 맥락으로 이해해야 한다. 개발자 및 사용자가 PC, 스마트 폰 혹은 로봇의 응용을 편하게 개발하고 HW 및 SW들을 쉽게 개발·구현하여 사용할 수 있도록 HW 및 SW를 활용하는 방법(인터페이스라 칭함)을 오퍼레이팅 시스템에서 제공한다. 이러한 인터페이스들이 PC와 스마트 폰에서는 거의 표준화되어 있다. 이러한 표준 인터페이스 기반으로 쉽게 응용들을 개발, 구현함으로써 관련 운영체제들이 확산되고 있다.

다시 말하자면, 개발자 혹은 사용자가 직접 특정 시스템의 HW 및 SW를 제어하는 프로그램을 만들었다고 하자. 이 개발자들이 다른 시스템의 같은 종류의 HW 및 SW를 제어한다고 할 때 그 시스템에서 제공하는 HW 및 SW의 인터페이스가 다르다고 한다면 새롭게 제어 프로그램을 개발해야 한다. 바로 이러한 이유 때문에 오퍼레이팅 시스템이 필요하다. 즉 오퍼레이팅 시스템은 PC 혹은 로봇 시스템을 구성하는 다양한 HW와 SW를 쉽게 사용하고 실행코드 형태로 된 응용 프로그램들을 같은 오퍼레이팅 시스템을 사용하는 시스템들에서 공통적으로 잘 동작하게 해줌으로 사용자와 개발자들에게 매우 필요한 시스템 소프트웨어이다.

동시에 오퍼레이팅 시스템이 살아남기 위해서는 상업적으로 성공하여야 하는데, 이를 위해서는 응용 프로그램들에 대한 권리보호, 즉 응용들이 소스코드로 배포되는 것보다 실행코드로 배포되는 것도 중요하다. 이에 대한 예들이 윈도우즈, iOS, 안드로이드 등에서 알 수 있다. 그리고 응용 프로그램들의 폭발적인 확산은 오퍼레이팅 시스템을 효율적으로 활용하도록 만들어주는 개발도구도 중요한 요소이다.

정리하면 로봇, PC 및 스마트폰과 같은 HW 시스템을 효율적으로 사용하고 응용 프로그램을 쉽게 개발하고 상업적인 이득을 얻기 위해서는, 응용을 공통적으로 활용할 수 있는 오퍼레이팅 시스템이 필요하다는 것을 알 수 있다. 이 오퍼레이팅 시스템이 성공하기 위해서는 HW 및 SW를 공통적으로 사용하게 만드는 인터페이스 표준과 다양하고 쉬운 개발도구가 중요하다.

PC, 스마트 디바이스(폰 및 패드)와 로봇이 HW 관점에서 어떤 차이가 존재하는 지를 다음 표 1에서 볼 수 있다. 로봇은 PC 혹은 스마트 디바이스보다 훨씬 다양한 HW들과 일반 운영체제들을 활용하기 때문에 실제 활용에 있어서 복잡할 수 있다. 단순하게 만들 수는 있지만 이 경우에는 많은 제약이 존재한다. 즉 실제 로봇 오퍼레이팅 시스템이 궁극적인 로봇 오퍼레이팅 시스템이 되기 위해서는 많은 연구가 필요하다는 것을 알 수 있다.

▲ [표1] 로봇, PC, 스마트 디바이스의 비교
로봇의 응용을 사용자가 원하는 동작을 수행하는 것이라고 한다면, 이러한 응용을 동작시키기 위해서는 여러 SW 모듈들이 존재할 수 있다. 예를 들면, 전시장의 안내 로봇을 생각하면 안내 로봇은 전시장을 사람과 충돌 없이 출발지와 목적지를 왕복하면서 지나가는 사람의 물음에 답하고 아는 사람을 만나면 인사하는 기능을 수행한다. 이 안내 로봇은 주행 기능과 음성인식 기능, 얼굴인식 기능 등을 동시에 수행한다. 좀 깊이 들어가면 이러한 동작을 위해서는 안내 로봇은 충돌을 감지하는 모듈, 위치를 인식하는 모듈, 모터를 움직이는 모듈(혹은 이동 모듈), 카메라 모듈, 얼굴인식 모듈, 음성 인식 및 음성 출력 모듈을 동시에 혹은/그리고 차례로 수행한다. 즉 안내 로봇의 응용은 이러한 모듈들이 함께 결합된 패키지로 볼 수 있다.

로봇 응용을 동작하기 위해서는 패키지에 포함된 모든 HW 및 SW 모듈이 존재하여야 알맞게 동작한다. 따라서 로봇 응용을 동작시키기 위해서는 이러한 모듈들이 모두 존재하는지를 확인해야 하는 절차가 포함되어 있어야 한다. 이 내용은 일반 운영체제 혹은 응용 프로그램이 동작하기 전에 필요한 HW 모듈이 있는지를 확인하는 내용과 유사하다.

현재 로봇 오퍼레이팅 시스템은 일반 오퍼레이팅 시스템(예: 리눅스, 윈도우즈, 실시간 OS) 상에서 동작하는 미들웨어이며, 현재 세계적으로 유용하게 남아 있는 것은 ROS(Robot Operation System), OPRoS(Open Platform for Robotic Services), openRTM(open Robot Technology Middleware) 등이다. ROS는 통신기반의 미들웨어이며, OPRoS와 openRTM은 스케쥴링 기능과 통신이 결합된 미들웨어이다. 이러한 미들웨어 모두 SW 모듈간 데이터의 송수신과 서비스의 호출 및 응답을 처리하며, HW 자원들의 활용은 모두 일반 오퍼레이팅 시스템의 도움을 받는다. 그러나 SW 자원은 ROS는 일반 오퍼레이팅 시스템을 활용하고, OPRoS와 openRTM은 일반 오퍼레이팅 시스템(예:파일관리)과 로봇 오퍼레이팅 시스템(예: 주기 및 비주기 수행)의 도움을 받는다.

참고로 통신(기반) 미들웨어가 실시간성을 가진다는 것과 로봇 시스템이 실시간성을 가진다는 것은 다른 의미이다. 통신 미들웨어의 실시간성은 통신 관점에서 데드라인에 가까운 메시지를 먼저 전송해야 한다는 것이고 로봇 시스템의 실시간성은 데드라인에 가까운 프로세스를 먼저 수행해야 한다는 것이다. 실시간 측면에서는 송신측에서 먼저 메시지를 전송하는 것과 수신측에서 메시지를 수신하는 것이 다르다는 것을 이해해야 한다. 수신 측에서 메시지를 받아서 실시간으로 처리해야 한다고 하면 수신측에서 메시지의 수신을 빨리 해야 하므로 수신측 프로세스(SW 모듈)의 수행을 먼저 수행해야 하는 것을 의미한다. 즉, 송신이 실시간으로 처리한다고 하더라도 송신측에서 실시간으로 처리하지 못하면 의미가 없다. 따라서 로봇의 실시간성은 필요한 메시지를 실시간으로 처리하는 것도 필요하지만 프로세스를 실시간으로 처리해야 하는 것이 더 중요하다.

ROS에서는 데이터의 송수신을 출판(publish) 및 구독(subscribe) 방식으로 처리하며, 서비스 호출은 요구-응답 방식으로 처리한다. 출판/구독 방식은 미리 송수신 대상을 정하지 않는 방식으로, 한 SW 모듈이 관련 데이터의 구독을 신청하면 데이터를 전송(출판)하는 SW 모듈이 구독을 신청한 SW 모듈들에게 관련 데이터를 전송하는 방법이다. ROS는 로봇의 개발자의 수준에 맞게 만들어져 C/C++ 언어의 기본과 리눅스 프로그램의 기초만 알더라도 ROS를 사용할 수 있도록 되어 있다. 또한 PR2 10대를 세계 유명 연구진들에게 배포하여 수집된 관련 소스코드와 openCV 및 PCL (point Cloud Library)의 소스코드와 매뉴얼을 공개 배포함으로써 ROS의 활용을 활성화시켰다. 이에 따라 현재 ROS는 로봇 연구자 입장에서 가장 많은 사용자를 확보한 커뮤니티를 가지고 있으며, 실용적인 개발도구도 ROS 커뮤니티를 통하여 제공되고 있다.

그러나 단점이 존재하는데, 이는 실시간성과 표준화, 안전성, 보안성, 상당한 크기의 메모리 사용 관련 내용이다. 또한 현재 이러한 단점을 제거하기 위해 ROS 2.0을 제안하고 있다. 통신 미들웨어 관점에서 실시간성과 보안성, 표준화를 위해 DDS(Data Distribution Service)과 임베디드 보드에 구현할 경량형 미들웨어를 위하여 기능이 축소된 새로운 형태의 방법과 실시간성 수행과 관련된 내용도 ROS2.0에 포함될 것이라는 것을 2015년 ROSCon에서 발표하였다. 그러나 실시간성 관련되어서는 발표 초안을 보면 OPRoS와 openRTM과 유사한 형태로 수행하는 방법으로 생각된다. 이에 따라 OPRoS 개발 경험이 있는 저자는 앞에서 언급한 3 방법들이 사용자들에게 ROS1.0과 같이 일관성있게 어떻게 포함할 것인지를 관련 커뮤니티의 아이디어를 기대한다. 참고로 실제로 OPRoS와 openRTM에서는 ROS 2.0에서 구현할 내용들이 이미 발표되어 있다. ROS1.0은 주로 리눅스 상에서 동작을 하지만, ROS2.0은 다양한 일반 오퍼레이팅 시스템에서 동작되도록 할 예정이다. 지원하는 프로그래밍 언어는 C/C++ 뿐만 아니라 자바와 파이선도 지원한다.

OPRoS와 openRTM의 데이터 송수신과 서비스 호출 방법은 그래픽 도구를 통하여 SW 모듈들 간에 미리 연결을 설정해야 한다. 이러한 연결은 1:1 혹은 1:N으로 연결할 수 있다. 이러한 연결을 위해서는 사용하고자 하는 SW 모듈들의 구성 혹은 설계가 되어 있어야 하는 것을 의미하고 있다. 이 경우에 새롭게 개발할 SW 모듈과 재활용할 SW 모듈들을 정리할 수가 있는 장점도 있다. 다른 장점은 스케쥴러를 로봇 오퍼레이팅 시스템에 내재되어 있어 SW 모듈들의 주기 수행들을 쉽게 제어할 수 있다는 것이다. 즉, ROS처럼 주기 제어를 위해 프로그램 속에 코딩으로 되어 있지 않고, OPRoS와 openRTM은 구성 파일에서 해당 SW 모듈들의 주기를 설정하여 제어할 수 있다. 이러한 방법은 실시간성, 보안성, 안전성을 제공하고 있다.

또한 OPRoS는 임베디드 보드에 구현될 정도의 경량형 오퍼레이팅 시스템이지만, openRTM은 CORBA를 기반으로 하기 때문에 무겁다. openRTM은 여러 종류의 프로그램 언어에 맞는 로봇 오퍼레이팅 시스템을 제공하지만, OPRoS는 C/C++ 언어기반만 제공한다. 단점은 ROS와는 다르게 컴포넌트 기반 디자인 방법에 따라 SW 모듈들을 개발하기 때문에 로봇의 개발자들이 ROS보다 익숙하지 않다는 것과 현재는 개발지원도구와 사용할 만한 SW 모듈들이 ROS보다 많지 않다는 것이다. 실제로 컴포넌트 기반 디자인 방법은 컴퓨터 분야에서는 매우 많이 사용하는 방법이며 현재의 모든 IT 서비스들은 이 방법을 활용하고 있다. 컴포넌트 기반 설계 방법의 장점은 컴포넌트의 인터페이스들만 공개할 수 있기 때문에 응용들을 상용화할 수 있다는 것이다.

따라서 ROS도 어느 시점부터는 SW 모듈의 상용화를 위해서는 컴포넌트 형태로 제공할 것으로 예상한다. 그렇게 되어야 SW 모듈의 재활용성과 더불어 상용화도 가능하기 때문이다. OPRoS와 openRTM은 윈도우즈, 리눅스 및 실시간 운영체제를 복합적으로 활용할 수 있고 개별 오퍼레이팅 시스템에서도 동작할 수 있도록 되어 있다. 또한 SW 모듈로 지원하는 프로그래밍 언어도 C/C++ 뿐만 아니라 자바와 파이선도 지원한다.

개발도구에서 가장 중요한 것은 디버깅 기술이다. 사실 로봇 오퍼레이팅 시스템에서 응용을 디버깅 한다는 것은 매우 어렵다. 특히 현대의 일반 오퍼레이팅 시스템은 다중 프로세스(혹은 타스크)로 동작하기 때문에 하나의 프로세스에 대해 디버깅을 하더라도 다른 프로세스들은 동작을 하고 있기 때문에 항상 같은 상황을 재현하기가 힘들다. 예를 들면, 앞에서 언급한 안내 로봇의 충돌 감지가 잘 안되어 충돌 감지 모듈을 디버깅한다고 가정하자. 충돌 발생 시 충돌 감지 모듈의 원하는 지점에서 SW 모듈의 동작이 멈추게 되지만 다른 SW 모듈들은 수행을 계속한다. 따라서 실제로 충돌 발생 시의 환경을 완전히 재현할 수 없어 디버깅이 힘들다.

앞으로 로봇 오퍼레이팅 시스템을 사용하는 사람은 일반 오퍼레이팅 시스템과 같이 자신이 원하는 로봇 응용을 선택하여 동작시키도록 하는 것을 원할 것이다. 즉 주어진 몇 개의 동작만 하는 것이 아니라 원하는 로봇 응용을 구매하거나 개발하여 자신의 로봇 기능을 확장하여 동작시키기를 원한다. 일반 PC 혹은 스마트 폰에서는 사용자가 앱을 자율적으로 구매하지만, 로봇에서는 안전성 때문에 자신의 로봇 특성에 맞는 응용을 구매해야 한다. 이러한 로봇의 특성에 대한 정보 등을 로봇 오퍼레이팅 시스템에서 확인해야 알맞은 응용을 동작시킬 수 있다. 이는 스마트 디바이스의 종류를 확인하고 그에 맞는 앱을 다운로드하는 것과 유사하다. 이러한 응용을 구매한 후에는 응용을 구성한 모듈들이 업데이트되거나 좀 더 좋은 모듈로 대체하여 사용하기를 원할 수 있다. 또한 구입한 응용이 로봇에 동작하기 전에 안전성과 로봇의 실제 HW의 동작성에 맞는지도 검증이 필요로 한다. 즉 SW 모듈간의 의존성 뿐만 아니라 동작되는 HW 모듈간의 의존성 검사도 필요로 한다.

현재 로봇 HW 및 SW에 대한 공용화와 재활용성을 위하여 모듈화에 대한 국제 표준화를 진행하고 있다. 이러한 방향에 맞추어 로봇 HW 및 SW 모듈들의 운영 방식인 로봇 오퍼레이팅 시스템이 자연스럽게 논의될 것이다. 로봇 오퍼레이팅 시스템 발전은 다음과 같은 방향으로 접근하게 될 것으로 예상된다.
- 사용자는 편리하게 사용할 수 있도록, 개발자는 편리하게 개발할 수 있도록.
- SW 모듈들이 상용화 가능하고(즉, 실행 코드로 배포), 실행 코드 재활용에 따른 응용
의존성및 보안성 검증 강화
- 실시간성 지원 (짧은 주기에서 긴 주기까지)
- 안전성 검증
- HW 자원 접근 및 로봇 오퍼레이팅 시스템에 대한 인터페이스 표준화
- 디버깅이 편리하며, 의존성 검증이 가능한 개발도구
- 통신 보안성 강화(통신을 통한 데이터 누출 방지 및 악의적 해킹 방어)

향후 이러한 요구조건들을 만족하는 로봇 오퍼레이팅 시스템이 개발되어 진다면 모든 로봇들이 사용할 것으로 생각된다. 국내에서도 이러한 요구조건들을 모두 만족하지는 않지만 부분적으로 만족하는 로봇 오퍼레이팅 시스템을 개발하였다. 많은 연구자들이 이러한 요구조건들을 만족하는 원천기술들을 협업으로 개발하여 세계 시장에 진입함으로써, 향후 개발될 국내의 로봇 오퍼레이팅 시스템을 MS사의 윈도우즈, LINUX 혹은 안드로이드와 같이 만들 필요가 있다. 박홍성 교수∙ 강원대학교 IT대학 전자통신공학과

로봇신문사  robot@irobotnews.com
로봇신문사의 다른기사 보기  
폰트키우기 폰트줄이기 프린트하기 메일보내기 신고하기
트위터 페이스북 구글+ 밴드 뒤로가기 위로가기
이 기사에 대한 댓글 이야기 (0)
자동등록방지용 코드를 입력하세요!   
확인
- 200자까지 쓰실 수 있습니다. (현재 0 byte / 최대 400byte)
- 욕설등 인신공격성 글은 삭제 합니다. [운영원칙]
이 기사에 대한 댓글 이야기 (0)
최근인기기사
1
디즈니 ‘겨울왕국 2’ 개봉 첫 주 예매 순위 1위 등극
2
소프트뱅크 로보틱스, 상업용 청소 로봇 북미 시장 런칭
3
고영테크놀러지, 런던에서 의료 로봇 등 기술 소개
4
두산인프라코어, 건설 무인화 기술 '컨셉트-X' 공개
5
‘로봇리더포럼-기술교류회 세미나‘ 26일 대전에서 열려
6
일본 빌딩관리업체 '다이세이', 건물경비에 아바타 로봇 도입
7
영국 자율주행 스타트업 '웨이브', 2천만 달러 투자 유치
8
중국 장저우에 특수 로봇 공장 세워진다
9
과학기술정보통신부
10
화낙, 中 광저우에 '화난' 기지 건설
로봇신문 소개기사제보광고문의불편신고개인정보취급방침이메일무단수집거부청소년보호정책    *국제표준간행물번호 ISSN 2636-0381 *본지는 인터넷신문위원회 자율심의 준수 서약사입니다
08298) 서울 구로구 공원로 41(구로동, 현대파크빌 427호)  |  대표전화 : 02)867-6200  |  팩스 : 02)867-6203
등록번호 : 서울 아 02659  |  등록일자 : 2013.5.21  |  발행인·편집인 : 조규남  |  청소년보호책임자 : 박경일
Copyright © 2013 로봇신문사. All rights reserved. mail to editor@irobotnews.com