RT 미들웨어의 화상처리 응용에 대한 전망
  • 월간 FA저널
  • 승인 2013.01.10 10:14
  • 댓글 0
이 기사를 공유합니다

최근 로봇 시스템용 미들웨어가 다수의 연구 기관에서 개발되고 있다. 이러한 상황에서 RT 미들웨어는 일본 NEDO의 ‘차세대 로봇 지능화 기술개발 프로젝트에서의 이용’ 등을 통해 RT 미들웨어상에서 동작하는 소프트웨어 모듈(RT 컴포넌트)의 성과가 공개됐다. 특히, 로봇 센서로 널리 이용되고 있는 비전 센서의 제어 및 그 정보를 처리하는 RT 컴포넌트도 다수 발표돼 컴퓨터 비전과 관련된 연구자 및 개발자도 이용 가능하게 됐다.


여기에서는 RT 미들웨어와 함께, 비전 시스템의 실장에 관한 설계 지침으로 NEDO 지능화 프로젝트 내에서 책정된 공통 카메라 인터페이스에 대해서 소개한다. 또한, RT 미들웨어를 화상 처리 시스템에 응용할 때의 이점과 과제에 대해서도 설명한다.


오사카 대학 기초공학 연구과

오하라 겐이치 특임 강사



로봇 시스템은 카메라, 센서, 액추에이터 등 여러 가지 요소로 구성된다. 대상이 되는 시스템에 원하는 기능을 실현하기 위해서는 기기를 제어하는 소프트웨어, 센서에서 얻은 정보에 근거해 처리하는 소프트웨어, 또 이것들을 통합하는 소프트웨어 등 다양한 수준의 소프트웨어가 필요하다.


소프트웨어 개발에 있어서 하드웨어의 존재를 무시할 수 없기 때문에 각 연구기관에서 개발된 소프트웨어는 각각의 기관이 가진 로봇 특유의 소프트웨어가 되기 일쑤였다. 로봇을 연구개발 단계에서 보다 실용적인 단계로 향상시켜 제품화하기 위해서는 이러한 소프트웨어 개발과 관련된 공정수를 줄여 가는 것이 중요과제라 할 수 있다.


로봇 제어에 필요한 대부분의 소프트웨어 중 특히 로봇에 이용되는 센서의 소프트웨어는 로봇에 한정되지 않고 폭넓은 애플리케이션에서의 이용을 기대할 수 있다. 이들에 대한 개발 완료 리소스를 공유하고 상호 운용의 틀을 구축해 가는 것은 연구의 베이스라인 격상뿐만 아니라, 로봇의 연구 개발을 보다 실용적인 단계로 끌어 올리는 데 있어서도 중요한 대처방법이라고 할 수 있다.


이처럼 로봇용으로 개발한 소프트웨어 리소스의 재이용을 목적으로, 최근 많은 미들웨어가 제안되고 있다. 특히 이들 미들웨어는 오픈 소스라는 것이 장점으로, 사용자가 그 방법 및 기호에 따라 설정 및 기능을 변경할 수 있기 때문에 연구 및 개발에도 폭넓게 이용되고 있다.


Willow Garage가 제공하고 있는 ROS는 전략적으로 보급돼 많은 연구자가 이용 중이다. 일본 내에서도 로봇용 미들웨어가 개발됐는데, 산업용 로봇을 대상으로 한 미들웨어로는 ORiN이 있고, 서비스 로봇을 염두에 둔 미들웨어로는 RSi이 제안되고 있다. 이들 미들웨어와 더불어 산업기술 종합연구소를 중심으로 한 RT 미들웨어도 개발되고 있다.


많은 미들웨어가 개발되고 있는 가운데 RT 미들웨어는 로봇의 하드웨어에 가까운 소프트웨어에서부터 시스템 통합화 단계까지 폭넓은 요구를 충족시키는 소프트웨어의 운용을 가능하게 한다. 또, 오픈 소스 소프트웨어이기 때문에 라이선스를 바탕으로 개발자가 자유롭게 이용할 수 있다는 특징을 가지고 있어, 로봇 분야뿐만 아니라 홈 네트워크 시스템 등 폭넓은 애플리케이션에 응용할 수 있을 것으로 기대되고 있다.


여기에서는 오픈 소스로 폭넓은 개발자가 이용 가능한 RT 미들웨어에 주목하고 그 특징과 함께, RT 미들웨어상에서 동작하는 소프트웨어 부품인 RT 컴포넌트가 가지는 기능에 대해서도 설명한다. 또한 RT 컴포넌트의 재이용성을 높이기 위한 표준 카메라 인터페이스 및 RT 미들웨어를 화상처리나 영상 시스템에 응용할 때의 이점 및 과제에 대해서도 설명한다.


RT 미들웨어

RT 미들웨어의 역사

RT 미들웨어는 2002년부터 2004년에 걸쳐 일본의 NEDO(신에너지·산업기술종합개발기구)의 21세기 로봇 챌린지 프로그램인 ‘로봇 기능 발현을 위해 필요한 요소기술 개발’에서 개발됐다. 이 프로젝트의 성과로 로봇용 미들웨어의 인터페이스 사양이 책정됐으며, 산업기술 종합연구소에서 책정한 인터페이스 사양에 근거해 OpenRTM-aist-0.2.0이 발매됐다. 이 발매를 기점으로 2004년부터 소프트웨어의 국제표준화단체인 OMG (Object Management Group)는 RT 미들웨어상에서 동작하는 RT 컴포넌트의 인터페이스 사양에 대한 표준 사양을 제안, 2006년 9월에 RT Component Specification으로 채택돼 국제표준사양이 됐다. 또, 2007년 4월에는 국제표준사양에 준한 RT 컴포넌트가 동작하는 환경으로, OpenRTM-aist-0.4.0이 산업기술 종합연구소에 의해 발매됐으며, 2009년 4월에 발매된 OpenRTM-aist-0.4.2를 거쳐 2010년 1월에 안정판인 OpenRTM-aist-1.0.0이 발매됐다.


지금도 버그픽스를 포함한 개발이 진행되고 있으며, 2012년 4월에는 OpenRTM -aist-1.1.0의 발매 후보판을 이용할 수 있다. OpenRTM-aist는 산업기술 종합연구소에서 개발된 RT 미들웨어로, RT Component Specification에 따른 미들웨어는 그 밖에도 존재한다.


NetFramework상에서의 RT 컴포넌트 개발을 지원하는 OpenRTM.NET, Android OS에 대응한 RTM on Android 등 산업기술 종합연구소 외에서 개발된 RT 미들웨어도 있다.


RT 미들웨어는 분산 오브젝트형 미들웨어로, 미들웨어상에서 동작하는 RT 컴포넌트를 네트워크에 연결되는 임의의 PC상에서 기동시킬 수 있다. 따라서 유연하게 로봇 시스템을 구축할 수 있는 것이 최대 특징이라고 할 수 있다.

여기에서는 많은 이용자가 사용하는 OpenRTM-aist를 중심으로 설명한다.


RT 컴포넌트가 제공하는 기능

RT 컴포넌트가 제공하는 기능은 다음 4가지로 크게 분류된다.

(1) 라이프사이클

(2) 데이터 포트

(3) 서비스 포트

(4) 컨피그레이션

편리성이 높고 내고장성이 높은 RT 컴포넌트를 개발하기 위해서는 이들 4가지 기능을 고려해 컴포넌트를 설계할 필요가 있다.


(1) 라이프사이클

RT 미들웨어 및 그 아래에서 동작하는 RT 컴포넌트의 큰 특징 중 하나로, 각 컴포넌트의 라이프사이클이 명확히 정의돼 있다는 점을 들 수 있다. 라이프사이클은 RT 컴포넌트의 상태를 나타내고 있어 사용자는 RT 컴포넌트의 동작 상태를 쉽게 파악할 수 있다.


한편, 개발자는 라이프사이클 각 상태의 의미를 이해하고 각각의 상태에 있어 행동 프로그램을 개발할 필요가 있다. RT 컴포넌트의 라이프사이클을 UML의 스테이트 머신즈 그림으로 표현한 예를 그림 1에 나타냈다. RT 컴포넌트의 스테이트 머신은 크게 2개의 형태로 나뉜다. 엄밀하게는 모든 상태에 대해서 이해하는 것이 바람직하지만, 특히 알아둬야 할 것은 그림 1의 아래쪽에 있는 3개의 상태(InActive, Active, Error)다. RT 컴포넌트 개발자는 각 상태의 RT 컴포넌트 거동, 또 상태 사이를 천이할 때의 거동(그림에서는 활성화시 처리나 주기처리 등)에 대해서 구현할 필요가 있다.


라이프사이클을 이해하고 각각의 상태에 적절하게 기능을 할당함으로써 뜻하지 않는 사태에도 시스템을 정지하는 일 없이 복구 가능한 강인한 RT 컴포넌트를 창출할 수 있다.


(2) 데이터 포트

데이터 포트는 RT 컴포넌트 간 데이터 송수신에 이용되는 포트다. 입력용 DataIn Port와 출력용 DataOutPort로 구성되고 각각을 쌍이 되도록 RT 컴포넌트를 개발할 필요가 있다. 쌍으로 이뤄져 있는 포트끼리 접속함으로써 데이터의 송수신이 가능해진다. 그림 2에 나타낸 것과 같이, 컴포넌트 A에서 처리된 데이터를 순차적으로 컴포넌트 B로 송신, 컴포넌트 B에서는 수신하는 대로 순차적으로 그 데이터의 처리가 이뤄진다. 따라서 로봇의 센서인 초음파나 힘, 화상 등 순차적으로 획득되는 데이터의 송수신에 적합한 기능이라고 할 수 있다.


(3) 서비스 포트

데이터 포트가 주기적인 데이터의 송수신에 적합한 데에 반해, 서비스 포트는 비정기적으로 발생하는 이벤트적인 처리의 실행에 적합한 기능이다. 데이터 포트와 마찬가지로, 서비스 포트도 2개의 기능이 존재한다. 그림 3과 같이, RT 컴포넌트가 가진 기능을 제공하는 포트인 Service Provider를 사이에 두고, 제공되고 있는 기능을 이용하기 위한 포트인 Service Consumer로 구성되며, Service Provider와 Service Consumer는 쌍으로 존재한다.


서비스 포트는 IDL(Interface Definition Language) 형식의 파일에서 규정되고, 데이터형 등은 CORBA(Common Object Request Broker Architecture)와 같다. IDL 파일에서는 서비스 포트가 제공하는 기능의 리스트(프로그램에서의 함수 정의와 같은 이미지)가 기술돼 있으며, Service Provider에서는 기능의 실체를 기술한다. Service Consumer에서는 프로그램에서 함수 불러오기를 시행하는 것과 같이 Service Provider가 제공하는 기능을 이용한다. 그 때문에 앞에 기술한 것처럼, 필요할 때에 적절한 기능을 이용하고 싶을 때 적합한 포트다.


서비스 포트의 이용 방법으로는 RT 컴포넌트의 동작 모드 변경, 파라미터 호출, 기록 처리와 같이, 필요에 따라 불러와 이용하는 기능의 실현에 적합하다.


(4) 컨피그레이션

카메라에서 화상 입력을 목적으로 하는 기존 프로그램에서는 카메라로 취득한 화상 사이즈와 각종 파라미터 설정을 유연하게 변경하기 위해, 설정 파일 등을 준비하고 적절한 프로그램으로 읽히도록 하는 형태를 취한다. 이 경우 다른 사양의 카메라도 설정 파일을 변경하기만 하면 대응이 가능하다. 컨피그레이션은 기존의 설정 파일 베이스에서 실행하고 있던 것과 같이, 프로그램 속 파라미터를 유연하게 변경하는 기능을 제공한다.


컨피그레이션의 큰 특징으로 RT 컴포넌트 동작 중에도 파라미터 변경이 가능하다는 것이다. 컨피그레이션에서 설정한 파라미터의 세트를 컨피그레이션 세트라고 하고, 그림 4와 같이 복수의 컨피그레이션 세트를 준비해 둠으로써 일괄적으로 파라미터를 변경하는 것도 가능하다. 만일 복수의 조건에서 카메라로부터 화상을 획득하고 싶은 경우 각종 파라미터를 하나하나 변경해 가거나 사전에 설정한 파라미터로 일괄 변경할 수 있다. 또, 카메라용 RT 컴포넌트가 범용적일 경우 카메라별 카메라 파라미터로 순차적 변경을 할 수 있다.


이와 같이 컨피그레이션을 이용하면, 개발한 RT 컴포넌트의 소스 코드를 수정하지 않고도 변경이 가능해 컴포넌트에 유연성을 부여할 수 있다.


RT 컴포넌트 개발 지원 툴

OpenRTM-aist에서는 개발자에 의한 RTC 개발 및 동작 검증을 지원하기 위해서 다양한 툴을 제공하고 있다. 그 대표적인 툴에는 RTC Builder와 RT System Editor가 있다.


RTC Builder는 RT 컴포넌트 개발 초기에 필요한 RT 컴포넌트의 소스 코드 모형(스켈튼)을 출력하는 툴이다(그림 5). RT 컴포넌트의 개발에서는 공통이 되는 코드가 많이 존재하기 때문에 이러한 툴을 이용함으로써 개발 초기의 공정을 줄일 수 있다. RT System Editor는 개발한 RT 컴포넌트의 동작 확인에서부터 시스템의 운용 단계까지 폭넓게 이용할 수 있는 툴이며, RT 컴포넌트끼리를 접속하는 기능, 나아가 RT 컴포넌트의 라이프사이클을 제어하는 기능을 가지고 있다(그림 6).


RT System Editor에 의해 사용자는 GUI상에 존재하는 블록을 조합시키기만 하면 로봇 시스템을 구축할 수 있기 때문에 RT 컴포넌트를 이용한 시스템의 동작 검증 및 운용을 쉽게 할 수 있다. 대표적인 위의 2개 툴과 더불어 일본 산업기술 종합연구소나 기타 연구그룹에서 개발하고, RT 컴포넌트를 베이스로 한 시스템 운용 지원 툴이 많이 제공되고 있다.


공개된 RTC 및 툴의 이용

일본 NEDO가 실시한 ‘차세대 로봇 지능화 기술개발 프로젝트’에서의 개발물이나 계측자동제어학회 시스템 인티그레이션 부문 강연회에서 실시되고 있는 RT 미들웨어 콘테스트에서 발표된 작품은 OpenRTM-aist의 웹 페이지에서 다운로드한 후 이용할 수 있다. 여기에서 공개되고 있는 RT 컴포넌트나 툴은 산업기술 종합연구소에서 개발된 것뿐만 아니라, 많은 대학 및 연구 기관에서도 있다. 공개되고 있는 성과물들은 특정 로봇에 특화된 것부터 범용적인 것까지 폭넓기 때문에 로봇 시스템 개발자의 요구에 맞는 RT 컴포넌트를 이용할 수 있다. 특히 레이저 거리 측정기, 단안 비전이나 스테레오 비전을 이용한 RT 컴포넌트도 많이 공개돼 있어 로봇 연구자뿐만 아니라 컴퓨터 비전의 연구자도 유용한 모듈을 이용할 수 있다.


재이용성이 높은 RT 컴포넌트의 창출 :

공통 카메라 인터페이스의 책정

RT 컴포넌트에서는 4개의 기능을 적절하게 이용함으로써 목적하는 기능을 실현할 수 있지만, 그 한편으로는 4개의 기능 중 특히 컴포넌트 사이를 연결시키는 기능을 제공하는 데이터 포트와 서비스 포트의 운용은 개발자에게 달려 있다. 어떤 식으로 개발할 것인지는 개발자 마음에 달려있지만, 개발한 RT 컴포넌트를 여러 기관에서 이용하는 경우 각각의 기관에서 개발한 RT 컴포넌트끼리 접속할 수 없다는 문제가 발생하게 된다. 즉, 현재의 RT 컴포넌트 개발에 있어 문제를 해결하고 개발물의 재이용성을 높이기 위해서는 일정한 정해진 지침에 따라 개발해야 한다는 것이다. 


이에 따라, NEDO 차세대 로봇 지능화 프로젝트에서 공통 카메라 인터페이스를 제안해 왔다. 그림 7에 나타낸 것과 같이, 공통 카메라 인터페이스에서는 카메라 화상 취득을 위한 컴포넌트와 카메라 화상을 이용한 처리 컴포넌트 사이의 인터페이스 및 이용하는 데이터 포트의 형태와 서비스 포트가 가진 기능에 대해서 규정하고 있다. 공통 카메라 인터페이스의 상세는 그림 8에 나타냈다.


공통 카메라 인터페이스에서는 카메라 화상과 관련된 폭넓은 용도로의 이용을 가정해 스테레오 카메라(Timed Multi Camera Image), 단안 카메라(Timed Camera Image), 일반적인 화상 등과 같은 계층적인 구조로 함으로써 화상 정보로 액세스시 주목 부분을 알기 쉽도록 구성했다. 또, 로봇 비전에서 널리 이용되는 계측 용도를 고려해 OpenCV에 준거한 형태로 내부 파라미터나 렌즈의 왜곡 파라미터를 주고받을 수 있도록 돼 있다.


RT 컴포넌트 간 통신은 네트워크를 통해서 이뤄지기 때문에 이미지와 같이 대용량 데이터는 전송 시간이 걸릴 뿐만 아니라 네트워크의 부하를 증대시킨다. 그 때문에 시스템의 요구에 있었던 화상전송을 실현하기 위해 서비스 포트에서 카메라를 제어하기 위한 기능을 제공한다. 서비스 포트에서의 모드 설정에 의해 화상을 1장만 데이터 포트에서 송신하는 것이나 연속적으로 출력하는 등의 제어가 가능하다.


이러한 기능을 제공하는 공통 카메라 인터페이스를 기술한 파일은 공통 카메라 인터페이스의 공개 사이트에서 다운로드가 가능하다. 또, 공통 카메라 인터페이스를 채용한 RT 컴포넌트의 이용 및 공통 카메라 인터페이스에 근거한 RT 컴포넌트 정보를 알리기 위해 웹 페이지를 만들었다.


공통 카메라 인터페이스에 대응해서 공개되고 있는 RT 컴포넌트로 산업기술 종합연구소에서는 3개의 카메라에 의한 스테레오 뷰 거리 계측, 그리고 3차원 물체인식 기능을 제공하는 강력한 RT 컴포넌트군으로는 OpenVGR을 공개하고 있다. RT 컴포넌트군뿐 아니라, 교정용 툴도 공개하고 있기 때문에 시험용으로 사용하기 쉬운 RT 컴포넌트군이다.


또, 공통 카메라 인터페이스 사이트에는 오사카대학 아라이 연구실에서 개발된 단안 카메라에서의 물체 위치·자세 추정 컴포넌트가 공개되고 있다. 이 외에도 공통 카메라 인터페이스 사이트에는 다른 기관에서 개발된 공통 카메라 인터페이스 대응 컴포넌트에 대해서도 소개돼 있다.


RT 미들웨어를 비전 시스템

응용시의 이점과 과제

지금까지 화상 취득과 그 화상을 이용하는 RT 컴포넌트 간의 인터페이스에 대해서 기술했다. RT 컴포넌트 간 인터페이스를 공통화하고 상호 접속·이용할 수 있는 환경을 정비함으로써 각 연구기관에서 개발한 성과를 서로 이용하기 쉬워진다.


여기에서는 RT 미들웨어를 실용적인 비전 시스템에 응용하고자 하는 경우의 이점과 과제에 대해서 기술한다. 앞서 제시한 공통 카메라 인터페이스에 대응한 RT 컴포넌트를 이용함으로써 다양한 화상 처리 시스템의 구축이 가능해진다. 그림 9에 나타낸 것은 그 하나의 예로 카메라에서의 화상 취득, 하프 변환, 화상 사이즈의 변경, 회화와 같은 기능이 각각 하나의 RT 컴포넌트로 돼 있음을 확인할 수 있다. 처리별로 RT 컴포넌트화함으로써 RT 컴포넌트의 사용자는 적절하게 필요한 처리의 RT 컴포넌트를 가져가 시스템을 구축할 수 있게 됐다. 이와 같이 처리 단위로 RT 컴포넌트를 준비함으로써 사용자 수준에서 시스템을 커스터마이즈하기 쉬워진다.












한편, 앞서 설명한 것과 같이, RT 미들웨어는 분산 오브젝트형이기 때문에 네트워크상의 어느 PC상에 RT 컴포넌트를 배치해도 상호 운용을 할 수 있다는 것이 장점이다. 그러나 처리단위로 RT 컴포넌트가 존재할 경우 각 컴포넌트 간에는 화상 데이터의 송수신이 발생한다. 네트워크 환경에 의존하는 점도 있지만 RT 컴포넌트의 수가 증가하면 그만큼 이미지의 전송이 이뤄지기 때문에 네트워크의 부하증대를 초래한다. 또한 화상 데이터의 송수신 및 이용하는 RT 컴포넌트의 수만큼 지연이 발생하게 된다. 그 때문에 RT 컴포넌트의 입도(粒度)를 작게 하는 것과 실용성을 고려한 시스템 구축 사이에는 트레이드오프 관계가 존재한다.


이 문제에 대해서 RT 컴포넌트 1개에 어느 정도의 처리를 탑재한다고 하는 접근방법을 생각할 수 있다. 그렇지만 많은 기능을 탑재한 RT 컴포넌트는 특정한 용도로 지나치게 특화되기 때문에 재이용성의 관점에서 고려해야만 한다.


또, 공유 메모리를 이용한 데이터 전송 속도의 향상을 목표로 한 보고도 있다. 공유 메모리를 이용하는 방법은 유용하지만 분산 오브젝트로서의 시스템 유연성이 손상되는 점에서 과제가 존재한다.


현재 RT 미들웨어에 있어 대용량의 데이터 전송과 관련된 문제에 대해 산업기술 종합연구소의 Geoffrey 등은 DDS(Data Distribution Service)라고 불리는 고속 데이터 통신수법을 RT 미들웨어에 도입하는 것을 목표로 하고 DDS for RTM으로 개발을 진행시키고 있다. 이러한 고속 데이터 전송 기술이 탑재됨으로써 현재의 RT 미들웨어의 과제를 극복하고, 보다 광범위한 실시간 처리가 요구되는 비전 시스템의 응용이 현실적이 된다.













지금은 RT 미들웨어가 제공하는 편리성을 살림과 동시에 세밀한 입도의 RT 컴포넌트를 베이스로 한 실시간 비전 시스템을 구축하는 데 있어 해결해야 할 과제가 남아 있다.


한편, 실시간 처리가 요구되지 않는 시스템에서는 공개돼 있는 많은 RT 컴포넌트를 이용할 수 있다는 점에서 RT 미들웨어를 이용한 비전 시스템은 충분히 실현 가능하다. 향후 새로운 고속 데이터 전송 기술이 RT 미들웨어에 탑재되면 광범위한 비전 시스템에서 RT 미들웨어를 도입하는 이점이 높아질 것이다.


여기에서는 로봇 이용시 주안에 둔 RT 미들웨어과 함께 미들웨어상에서 동작하는 RT 컴포넌트의 기능에 대해서 설명했다. 또, 비전 시스템 응용을 위해 다수의 이용 가능한 RT 컴포넌트 창출을 목표로 책정한 공통 카메라 인터페이스에 대해 제시하면서, 공통 카메라 인터페이스에 대응한 RT 컴포넌트군에 대해서도 설명했다. 그리고 마지막으로 RT 미들웨어를 비전 시스템에 응용하는 데 있어서 현재 안고 있는 과제에 대해서 기술하고 과제 해결을 위한 대처법에 대해 소개했다.

RT 미들웨어는 지금도 아직 활발하게 개발이 이뤄지고 있어 앞으로도 보다 편리한 기능이 탑재됨과 동시에 사용자 수의 증가도 기대된다. 




댓글삭제
삭제한 댓글은 다시 복구할 수 없습니다.
그래도 삭제하시겠습니까?
댓글 0
댓글쓰기
계정을 선택하시면 로그인·계정인증을 통해
댓글을 남기실 수 있습니다.