본문 바로가기

Robotics : 로봇공학/Certificate : 자격증

Middleware, Operating system : 2-1-1 미들웨어, 로봇 운영 체제

미들웨어(middleware)
  •  미들웨어 정의

일반적으로 미들웨어는 응용 소프트웨어가(application software) 운영 체제(operation system, OS)로부터 제공 받는 서비스 이외에, 추가적인 서비스를 제공하는 컴퓨터 소프트 웨어라고 정의한다. 여기서 응용 소프트웨어는 유연하고 확장 및 축소가 편리하며, 이러한 장점을 충족하기에 개발자의 다른 기종 간 플랫폼을 다시 구축할 필요가 없어야 한다.

 

예 로 데이터베이스 시스템, 전자 통신 소프트웨어, 메시지 및 퀴리 처리 소프트웨어를 들 수 있다. 미들웨어는 양쪽을 연결하여 데이터를 주고받을 수 있도록 중간에서 매개 역할을 하는 소프트웨어, 혹은 네트워크를 통해서 연결된 여러 개의 컴퓨터에 있는 많은 프로세 스들에게 어떤 서비스를 사용할 수 있도록 연결해 주는 소프트웨어로 정의할 수도 있다. 최근에는 인터넷의 일반화와 융복합 기술의 발전으로 인해 어떤 것을 특정 지어 미들웨어 라 정의하기 힘든 상황이다. 즉, 미들웨어라는 기술이 광범위하게 확장되어지고 양쪽을 이 어주는 중간적인 기능을 담당하는 소프트웨어를 모두 미들웨어라고 애기할 수 있는 시기이 다. 특히, 인터넷을 기반으로 하는 통신 기능의 확대를 통하여 서버 컴퓨터와 클라이언트 컴퓨터를 연결하는 소프트웨어도 미들웨어의 한 종류라고 애기할 수 있다. 또 로봇 시스 템에서 로봇을 운영하는 운영 소프트웨어와 장애물 혹은 제품을 인식하는 비전 센서 응용 프로그램 사이에서 두 소프트웨어에 필요한 정보나 기능을 제공해 주는 소프트웨어 역시 미들웨어라고 말할 수 있다.

[그림 1] 로봇 시스템의 구성

로봇 소프트웨어에서 미들웨어를 사용하는 이유는 운영 소프트웨어와 미들웨어 혹은 미들 웨어를 포함하는 운영 소프트웨어를 사용하면 로봇을 개발하는 과정에서 시간, 효율성 및 신뢰성을 얻을 수 있기 때문이다. 로봇 소프트웨어 개발 과정에서 엄청나게 많은 소프트 웨어를 작성해야 하는 과정을 미들웨어를 사용함으로 상당히 많이 줄일 수 있다. 또 안정적으로 개발되어 있는 소프트웨어를 사용함으로써 소프트웨어 개발 과정의 효율성 을 높이며 동시에 소프트웨어의 신뢰성 또한 높일 수 있다. 기존의 개발되어 있는 미들웨어 소프트웨어를 활용함으로써 응용프로그램에서는 추가적인 소프트웨어 개발이 필요 없 게 되어 소프트웨어 개발의 효율성을 높이게 된다.

 

동시에 기존의 개발되어 있는 미들웨어 소프트웨어를 활용함으로써 응용프로그램과 미들웨어의 호환에 문제가 없다면 소프트 웨어의 신뢰성도 높일 수 있게 되는 것이다. 대표적인 예로, 안드로이드 운영 체제를 사용하여 핸드폰을 개발하는 핸드폰 개발 회사이 다. 핸드폰 개발 회사는 짧은 시간에 안정적이며 신뢰성 있는 제품을 개발하기 위해서 안 정적인 안드로이드 운영 체제(미들웨어 포함)를 선택하여 제품을 개발하여 개발 기간을 줄이고 효율성 및 신뢰성을 향상시키는 것이다.

<표 1> 미들웨어 사용에 따른 시스템의 영향 / 출처: 전준식(2014). 『거침없이 배우는 JBoss』. (주)지앤선. 12

미들웨어를 통해 HW 간의 인터페이스와 어플리케이션에서 필요로하는 보편적인 기능들을 정의하고 템플릿을 제공함으로써 개발기간 단축과 이에 적합한 HW들이 제안됨으로써 효율적인 개발이 가능하다. 그렇기 때문에 다양한 한 미들웨어들이 존재한다.

 

  • 미들웨어 종류

(1) 데이터베이스 접근 미들웨어(database access middleware)

응용프로그램의 SQL(structured query language) 요청 데이터베이스 서버 사이의 일 련의 접근 방법을 이용하여 보다 쉬운 데이터베이스의 접근을 제공한다. 일반적으로 데이터베이스 접근 미들웨어 산업표준에는 JDBC와 ODBC가 있으며 네트워크 접속되어 있는 데이터베이스 서버와의 접속, 데이터베이스 정보 보안 및 일관된 자료의 인터페 이스를 갖추고 있다.

 

(2) 트랜잭션 프로세싱 모니터(transaction processing monitor)

트랜잭션(최소한의 과업 수행)이 프로세서 내의 한 단계로부터 다음 단계로 잘 넘어가 는 것을 관리하는 프로그램이다. 이의 목적은 트랜잭션 처리가 완전하다는 것을 보장 하고, 만약 오류가 발생하면 적절한 조치를 취하기 위함이다. 트랜잭션 프로세싱 모니 터는 부하 분산을 채용한 3계층 구조에서 특히 중요한데, 한 트랜잭션이 여러 대의 서 버 중 어느 곳으로도 전달될 수 있기 때문이다. 실제로, 많은 모니터가 모든 부하 부산 동작을 처리하고 트랜잭션을 그들의 유용성에 따라 다른 서버로 보내고 있다.

 

(3) 분산 컴퓨터 환경(distributed computing environment)

분산 컴퓨터 환경은 다양한 플랫폼 간의 분산 컴퓨팅을 위한 OSF(open software foundation)에서 개발한 산업계 표준으로 분산 컴퓨터들의 시스템 내에서 컴퓨팅 및 데 이터 교환을 설정하고 관리하는 데 필요한 산업표준 소프트웨어 기술이다. 일반적으로 분산 컴퓨터 환경은 여러 가지 다른 크기의 서버들이 지리적으로 퍼져 있는 대형 컴 퓨터 시스템의 네트워크 내에서 클라이언트 및 서버 모델을 이용하여 구축된다. 분산 컴퓨터 환경이 지원하는 기능은 DCE RPC, DCE 이름 서비스, DCE 시간 서비스, DCE 보안 서비스, DCE 분산 파일 시스템, DCE 쓰레드 등이 있다.

 

(4) ORB(object request broker)

ORB는 객체 간의 클라이언트 서버 관계를 맺어주는 미들웨어이다. ORB를 사용하면 클라이언트는 서버 객체에 있는 메서드를 자유롭고 투명하게 호출할 수 있다. ORB는 호출을 가로채어 요구를 처리할 객체를 찾고, 매개변수를 전달하고, 메서드를 호출하 고 또 처리 결과를 돌려주는 일 등을 담당한다. 클라이언트는 객체 인터페이스를 제외 하고는 객체의 위치나 해당 객체를 개발한 프로그램 언어, 운영 체제, 그 밖에 시스템 과 관련된 어느 것도 알 필요가 없다. ORB는 이질적인 분산 환경에서 서로 다른 컴퓨 터 내에 이질적인 응용프로그램 간의 상호 운용성과 연결성을 제공한다

 

(5) 원격 프로시저 콜(remote procedure call)

원격 프로시저 콜은 한 프로그램이 네트워크상의 다른 컴퓨터에 있는 프로그램에 서 비스를 요청하는 데 사용되는 프로토콜 시스템으로 이때 서비스를 요청하는 프로그램 은 네트워크에 대한 상세 내용을 알 필요가 없다. 원격 프로시저 콜은 원격에서 서로 다른 플랫폼에서 제공되는 데이터 및 서비스를 이용하는 분산 컴퓨팅 환경의 핵심 구 성 요소로 포함되듯이 다른 미들웨어의 하부 시스템으로 포함되는 경우가 대다수이다

 

(6) 메시지 지향 미들웨어(message-oriented middleware)

메시지 관리를 위한 미들웨어로 일반적으로 큐(queue)를 이용한 응용프로그램 사이의 메시지 관리 미들웨어이다. 응용프로그램 사이의 비동기 비연결형 기술을 사용하여 통 신 개선 수단을 제공하는 통신 기반의 미들웨어이다. 여기서 통신 대화는 마치 두 사 람이 일련의 전자 우편 메시지를 교환하는 것과 매우 유사하게, 응용프로그램 사이에 서 주고받는 다수의 메시지로 구성될 수 있다. 이 메시지들은 임시 저장소(queue)로 보내어져 수신 측에서 가져갈 때까지 보관되어 축적 전송 방식으로 사용한다. 예로 한 사용자가 전자 상거래 서버에 주문 요구를 보낸다고 가정하면 이 요구는 즉시 처리될 수도 있고 임시 저장소에서 처리가 될 때 까지 대기할 수도 있다. 심지어 일부 요구 사항들은 퇴근 후에 처리가 될 수 도 있다.

 

로봇 운영 체제

 

  • 로봇 운영 체제와 미들웨어

최근에 소프트웨어 운영 체제에 대한 필요성이 증대되면서 많은 분야에 전용 운영 체제가 개발되어 활성화되고 있다. 대표적인 사례가 안드로이드로 대표되는 핸드폰 운영 체제이 다. 핸드폰을 비롯한 많은 제품의 소프트웨어를 개발하는 과정에서 제품 개발의 기간을 단축시키고 효율적이면서 신뢰성 있는 소프트웨어를 개발하기 위해서 운영 체제를 많이 활용하고 있다. 또 기존에 개발된 운영 체제는 기초적인 프로그램 실행이나 메모리 관리 에서 확대되어 네트워크 운영 및 사용자 인터페이스까지 확대되고 있다. 이와 같이 기존 의 운영 체제 기능의 확대는 네트워크 기능을 포함하는 미들웨어 가능으로 확대되고 있 다. 특히, 전 세계에서 로봇 소프트웨어를 개발하는 과정에 운영 체제를 경쟁적으로 개발 하여 로봇 산업을 선점하려고 하고 있다. 따라서 로봇 미들웨어 개발 과정을 로봇 운영 체제를 중심으로 미들웨어를 포함하여 기술하여, 미들웨어와 함께 로봇 운영 체제에 대한 이해를 높이도록 하겠다.

 

  • 로봇 운영 체제

(1) ROS(robot operating system)

ROS는 2007년 5월 미국의 스탠퍼드 대학 인공지능 연구소(AI LAB)가 진행하는 STAIR (stanford ai robot) 프로젝트를 위해 MORGAN QUIGLEY이 개발한 SWITCHYARD라는 시스템에서 시작하였다. 2007년 11월 미국의 로봇 전문 기업 WILLOW GARAGE사가 이어 받아 ROS라는 이름으로 개발하기 시작하였다. WILLOW GARAGE사는 개인 로봇 (personal robot) 및 서비스 로봇 분야에서 매우 유명한 회시이다. 그리고 우리가 알고 있는 영상처리 오픈소스인 OpenCV, 키넥트(kinect)와 같은 3차원 기기에 많이 사용되 고 있는 PCL(point cloud library)을 개발하고 지원했던 것으로도 유명했다. WILLOW GARAGE사는 2007년 11월부터 ROS 개발에 착수하여 2010년 1월 ROS 1.0이 세상에 나왔다. 우리에게 공식적으로 알려진 버전은 ROS BOX TURTLE이라는 이름으 로 2010년 3월에 소개되었다. 그 뒤에도 C TURTLE, DIAMONDBACK 등 우분투나 안 드로이드와 비슷하게 ABC 순으로 버전을 작명하고 있다. 2014년 7월에는 ROS 9번째 버전 ROS 인디고 이글루(INDIGO IGLOO, 공식적으로 8번째 버전)를 오랜 베타 과정을 거쳐 공개하였다. ROS는 BSD 라이센서(BSD 3-clause licence)를 기반으로 하고 있어서 누구든지 수정, 재사용, 재배포가 가능하고 로봇 관련 학회를 통해 먼저 알려지기 시작하였다. 특히, ROSDay와 ROSCon이라는 개발자와 사용자를 대상으로 하는 콘퍼런스가 열리고 있으 며 ROS Meetup이라는 이름으로 다양한 커뮤니티 모임도 진행되고 있다. 그뿐만 아니 라 ROS를 적용할 수 있는 로봇 개발도 빠르게 이루어지고 있다.

ROS는 하드웨어 추상화, 저수준 장치 제어, 공통적으로 사용 가능한 기능, 프로세스 간의 메시지 전달, 패키지 관리와 같은 로봇 소프트웨어 운영에 필요한 다양한 기능들 을 제공한다. ROS는 프로세싱 노드와 내부 구성 파일, 각종 라이브러리 등을 패키지라 는 형태로 묶어서 로봇 소프트웨어 모듈을 구성하는 기본 단위로 배포한다. ROS는 그 래프와 노드 관리, 분산 서비스 개발과 같은 여러 가지 개발 지원 도구들을 제공하고 있지만, 통합된 형태의 개발 환경이 아닌 개별 도구들의 집합 형태이기 때문에 사용자 들이 쉽게 접근하기 어려운 측면이 있다. 현재 주로 리눅스 운영 체제를 지원하고 있 고 윈도우 지원은 미약한 실정이다.

ROS는 그래프 기반 아키텍처를 채택하고 있으며 그래프는 노드들의 연결로 구성된다. 노드는 연산을 수행하는 프로세스로서, 하나의 로봇 시스템은 일반적으로 많은 수의 노드로 구성된다. ROS에서 각 노드는 [그림 1-2]와 같이 발행자/구독자(publish / subscribe) 방식의 토픽(topic)이라는 중간 매개체를 통해 센서 정보나 제어 명령, 상태 정보 등의 메시지를 다른 노드에게 보내거나 받을 수 있으며, 요청/응답(request / reply) 방식의 원격 서비스 호출 기능을 제공한다.

[그림 2] ROS 메시지 통신 절차

ROS는 각 노드를 위한 명시적인 컴포넌트 모델을 갖고 있지 않고 토픽과 서비스 호출 기능을 통해 프로세스 간 통신 기능을 제공하는 IPC(inter-process communi- cation)을 제공하는 형태이다. 따라서 노드들이 다른 노드와 어떤 형태로 연결되어 있는지 그 연 결 관계가 각 노드 프로그램에 하드 코딩되어 있어서 컴포넌트를 조합하는 시스템 설계 시점에 전체 구성을 알기 어렵고, 바이너리 형태의 코드가 수행되어야 그 연결 관 계를 확인할 수 있다.

▶ 코드가 실행이 되어야 해당 노드들이 어떠한 입출력 변수들을 토픽으로 받는지 확인이 가능하다. 모니터링 도구가 위 그림을 그려주며 코드의 앞단에 메세지가 주로 선언된다.

 

(2) OPRoS(open platform for robotics services)

2000년대 국가에서 로봇 소프트웨어의 중요함을 인식하여 로봇 소프트웨어 개발에 관 심을 가지고 정식으로 로봇용 플랫폼을 개발하기 시작하였다. 이후 산업자원부 SPIRE (S/W platform initiative for robotics engineering)와 정보통신부 RUPI(robot unified platform initiative)로 나뉘어 개별적으로 추진되었다. 2008년 새 정부 출범에 따라 로봇 산업 정책이 지식경제부로 옮겨지게 되었고, 이때 OPRoS라는 이름하에 하나의 로 봇 소프트웨어 플랫폼 개발이 시작되었다. 2009년 10월부터 소스코드를 전부 공개하여 현재까지 계속 업데이트가 진행 중이다.

OPRoS가 추구하고자 하는 목적은 로봇용 플랫폼과 통합된 개발 환경을 제공하여 다양 한 콘텐츠를 제공하고 로봇 산업 발전에 더욱 박차를 가하는 데 있다.

- 실제로 애플사 는 iOS기반의 iPod, iPhone을 출시하면서 MAC OS에서 Objective-C기반의 MAC용 어플 리케이션을 개발하는 Xcode 개발도구를 통해 개발 환경과 시뮬레이터를 제공하였고 iPhone 쇼크라는 세계적인 사회현상을 만들기도 하였다.

- 이에 한발 더 나아가 구글은 Android를 오픈소스로 제공하고 통합된 개발 환경과 에뮬레이터를 제공하여 iOS기반의 앱 시장을 넘어서고 있다. 통합된 개발 환경의 제공을 통해 기존의 C/C++, Objective-C, Java 개발자들이 쉽게 스마트폰 어플리케이션 개발자로 뛰어들 수 있었 다. 특히, 구글은 앞에서 본바와 같이 앱 인벤터를 통해 컴포넌트 기반의 어플리케이 션 제작 도구를 제공하고 있다. 프로그래밍 언어를 알지 못하더라도 어플리케이션을 개발할 수 있도록 유도하고 있어 더욱 다양한 분야의 사람들이 더욱 다양한 콘텐츠를 제공할 수 있는 환경을 형성시키고 있다.

- 자동차 분야의 AUTOSAR 플랫폼도 이와 같 은 맥락의 개발 환경을 제시하고 있다. 자동차 분야의 AUTOSAR 플랫폼을 이루고 서 비스 계층의 컴포넌트들을 추상화시킨 API를 통해 어플리케이션을 개발할 수 있는 환 경을 제공한다. 이로써 ECU에 실행되는 어플리케이션을 더욱 쉽게 구현할 수 있고 추 상화된 API를 사용하기 때문에 하드웨어에 독립적으로 설계될 수 있어 하드웨어가 바 뀌더라도 그대로 사용할 수 있는 장점이 있다.

 

로봇 소프트웨어를 재사용하기 위해서 로봇 소프트웨어 플랫폼이 발전하게 되었으며 OPRoS도 이와 같은 문제점을 해결하고 자 개발되었다. OPRoS는 컴포넌트를 활용하여 개발의 편의성 및 재 활용성을 높였다. 또 OPRoS는 통합된 개발 환경을 제공하여 로봇 소프트웨어 전문가와 일반 개발자가 콘텐츠를 더 쉽게 개발하게 해준다. 그리고 OPRoS는 시뮬레이터까지 제공하여 로봇을 통해 직접 테스트하지 않아도 테스트 할 수 있는 환경을 제공하여 개발 비용과 시간 을 더욱 단축시킬 수 있게 해준다

OPRoS는 컴포넌트들의 연결로 구성되는데 컴포넌트 간의 점유 시간을 낮추기 위한 방 법으로 포트(port)를 통한 컴포넌트 연결 방법을 적용하였다. 포트란 UML(unified markup language)2.0에서 추가된 개념으로 컴포넌트가 외부 환경과 상호 작용하는 지점을 의미한다. OPRoS 컴포넌트들은 포트를 통해 다른 컴포넌트들과 연결하고 상호 간 통신을 수행한다. 여기서 포트를 통해 연결하는 외부 컴포넌트 사용자는 컴포넌트 가 제공하는 인터페이스만을 이용하며 해당 인터페이스에 대한 상세 구현은 알 필요 가 없게 된다. 컴포넌트 사이의 통신은 송신 컴포넌트의 포트와 수신 컴포넌트 포트의 연결을 통해 이루어지는데 로봇 소프트웨어 컴포넌트 간 정보 교환은 주기적 데이터 전송과 이벤트 지원 및 원격 프로시저 호출이 있다. 이와 같은 정보 교환 방식을 지원 하기 위해 OPRoS 컴포넌트에서는 각 교환 방식에 대응되는 세 가지 종류의 포트를 지 원한다. 즉, 원격 메서드 호출을 위한 서비스 포트, 데이터 송수신을 위한 데이터 포트 및 이벤트 처리를 위한 이벤트 포트를 지원한다.

출처: OPRoS(http://www.ropros.org). 2016. 08. 04. 스크린샷. [그림 3] OPRoS 컴포넌트 모델

OPRoS 컴포넌트는 서비스 포트 ,데이터 포트, 이벤트 포트 중 적어도 하나의 포트를 가지고 있어서 외부와의 인터페이스를 수행한다. 또 컴포넌트는 용도에 따라 다양하게 포트를 생성하여 사용할 수 있으며 같은 종류의 포트를 여러 개 생성하여 컴포넌트를 구성할 수 있다. 컴포넌트는 서비스 포트를 통해 다른 컴포넌트가 제공하는 메소드를 호출하거나 해당 컴포넌트의 속성에 접근할 수 있으며 데이터 및 이벤트 포트를 통해 해당 컴포넌트에 데이터나 이벤트를 전달할 수 있다. 컴포넌트 간의 메소드 호출이나 데이터/이벤트 전달은 모두 포트를 통해 이루어지기 때문에 다른 컴포넌트에 메소드를 호출하거나 데이터 및 이벤트를 전달하기 위해서는 해당 컴포넌트의 포트를 알아야한다. 이를 위해 컴포넌트 개발자는 해당 컴포넌트가 제공하는 포트와 다른 컴포넌트 가 사용할 수 있는 포트를 프로파일에 명시해야 한다.

- 서비스 포트는 컴포넌트 내부의 메소드들과 바인딩 되어 사용되며 데이터 포트는 데이터 처리기와 바인딩 되어 주기 적인 방식이나 비주기적 방식으로 컴포넌트의 onExecute( ) 함수를 호출하여 데이터를 처리한다.

- 이벤트 포트는 이벤트가 도착 시에 특정 메소드(onEvent( ))가 즉시 호출되 어 상태 관리를 하도록 한다.

출처: OPRoS(http://www.ropros.org). 2016. 08. 04. 스크린샷. [그림 4] OPRoS 컴포넌트 개념의 로봇 개발 과정

(3) RTC(robot technology component)

RTC 규격은 로봇용 소프트웨어 컴포넌트들이 서로 조합되고 접속되기 위한 컴포넌트 사이의 공통 인터페이스 규격이다. 일본의 AIST와 미국의 RTI사는 RTC 표준 규격의 공동 개발 기관이다. RTC의 미들웨어 표준은 AIST가 개발하였고 관련 소프트웨어 미 들웨어는 기업에서 사용하고 있기 때문에 새로운 표준 규격에 대한 구현이 어렵지는 않을 것으로 예상하고 있다. 특히, 로봇의 많은 소프트웨어 모듈이 내장형 소프트웨어 이므로 경량화한 컴포넌트 모델로 구현하도록 한 것이 RTC의 특징이다. 일본 측은 표 준 규격의 구현을 위하여 일반적인 컴포넌트를 RTC 규격에 부합한 컴포넌트로 자동 변경하여 주는 툴을 개발하고 있다. 미국의 RTI사는 RTC를 이용한 미들웨어를 개발하 여 이를 상용화하고 있으며 통신과 분산 환경을 제공하는 미들웨어 프레임워크를 개 발할 것으로 보인다.

출처: 한국정보통신기술협회(http://www.tta.or.kr). 2016. 08. 04. 스크린샷. [그림 5] RTC 컴포넌트 구조

 

(4) 기타 로봇 운영 체제

iCub는 이탈리아의 IIT(istituto italiano di tecnologia)에서 개발한 휴머노이드 로봇의 운 영 체제로 전 세계적으로 20개 이상의 연구소에 iCub를 채택하여 연구를 진행하고 있 다. iCub는 전자회로도, 하드웨어 설계도, 소프트웨어 및 관련 자료까지 공개하였으며 운영 체제는 GPL(general public license) 기반으로 공개되고 있다. iCub 기반 로봇은 2~3세의 아이를 모티브로 개발이 진행되었으며 어린 아이가 인지를 통한 다른 사람과 의 상호 작용을 통해 학습을 하는 것과 같이, 다양한 센서 시스템을 통해 아이와 같은 인지 능력을 가질 수 있다는 가설을 기반으로 개발되었다. 또 iCub는 다양한 국가의 공동 연구로 추진되어 지속적인 연구 개발이 가능한 환경으로 연구가 진행이 되고 있 다는 특징을 가지고 있다.

 

OROCOS(open robot control software)는 EU와 벨기에(K. U. leuven), 프랑스(LAAS toulouse), 스웨덴(KTH stockholm)이 협력하여 진행하고 있는 실시간 제어 중심의 운영 체제 개발 프로젝트에서 시작되었다. 2001년 9월부터 본격적으로 개발을 시작해 2002 년 여름에 첫 번째 버전이 발표되었다. OROCOS는 범용적인 무료 소프트웨어를 개발 하고 로봇과 머신 제어를 위한 로봇 플랫폼에 독립적인 소프트웨어 프레임워크 개발 을 목표로 하고 있다. OROCOS는 어플리케이션 개발을 위한 Real-Time Toolkit, Kinematics, Dynamics Library, Bayesian Filtering Library 와 같은 4개의 C++ 라이브러 리를 지원하며 이전에 사용했던 컴포넌트 또는 타인에 의해 제공되는 컴포넌트들을 선택해 사용할 수 있는 재사용성의 장점이다. 그러나 OROCOS는 C++클래스 구조만 제 공하며 개발 도구나 컴포넌트 등은 제공하지 않고 Real-Time Toolkit 위주의 컴포넌트 실행에 초점이 맞춰져 실시간 외의 서비스에 대해서는 적합하지 않은 구조를 갖고 있다.

 

MRSRS(microsoft robotics studio)는 로봇 분야에 관심이 있는 사람들이 프로그래밍에 대한 기본적인 지식만 가지고 있으면 다양한 로봇 하드웨어 상에서 필요로 하는 다양 한 로봇 어플리케이션을 개발할 수 있도록 지원하기 위한 목적으로 개발된 개발 툴 및 환경이다. 2006년 말에 출시되어 VPL(visual programming language)라는 tool을 제공하고 고급 개발자들의 경우 C#을 이용한 서비스나 시뮬레이션 프로그래밍을 할 수 있도록 지원하고 있다. MRSRS의 특징은 실제 로봇 하드웨어 없이 3D 물리엔진 기반 의 시뮬레이션 환경을 이용해 개발된 프로그램을 테스트 할 수 있다는 점이다. 실제 로봇을 정교하게 제어하기 위해서는 다양한 물리적 요소를 감안한 프로그래밍이 필요 하지만 실제 로봇 없이도 이를 가능하게 해 주는 물리엔진 기반의 시뮬레이터가 포함 되어 있다.

이외에도 일본의 OpenRTM(AIST), NAOqi OS(Softbank), ERSP(Evolution Robotics) 등의 다양한 로봇 소프트웨어 운영 체제의 개발이 진행되고 있다. 아마도 로봇이 인간의 다 양한 활동에 직접적인 영향을 미치는 시점에는 로봇 소프트웨어 운용 체제도 핸드폰 사례와 같이 통일화되어 높은 신뢰성과 안전성을 확보하는 시점이 올 것으로 예상된 다. 물론, 로봇 미들웨어는 로봇 소프트웨어 운영 체제 안에 포함되어 다양한 기능이 나 서비스를 연결하는 기능을 수행하게 될 것이다.