RTミドルウエア


RTミドルウエア (RTM)

RTミドルウエア (RT-Middleware: RTM) とは、ロボット機能要素 (RT機能要素)のソフトウエアモジュールを複数組み合わせてロボットシステム (RTシステム)を構築する為のソフトウエアプラットフォームを指す一般名称です。 OpenRTM-aist は RTミドルウエア実装の一つであり、Open-source and open architecture Robot Technology Middleware implemented by AIST (産業技術総合研究所) の略称です。

RTシステムを構成するRT機能要素とは、あるまとまった機能を提供するロボット構成要素で、例えばサーボモーターやセンサー、カメラといったデバイス単位であったり、あるいはこうしたデバイスの組み合わせにより実現される移動台車、アームなども RT機能要素として捉える事ができるでしょう。

また、ハードウエアに結びついているものだけでなく、制御アルゴリズム、画像処理アルゴリズムといった、ソフトウエアのみで構成されるものも RT機能要素と考えることができます。 下図に示すように、モジュール化された RT機能要素を階層的に組み合わせることで、ロボットシステム構築を容易にするためのプラットフォームが RTミドルウエアです。

rtsystem_integration_ja.png
RTミドルウエアによるRTシステムインテグレーション

RTコンポーネント (RTC)

RTミドルウエアでは、RT機能要素をソフトウエアモジュール化したものを RTコンポーネント(RT-Component: RTC)と呼びます。RTコンポーネントには、他の RTコンポーネントとデータをやり取りしたり、通信したりする為のポートと呼ばれるインターフェースがあります。

図に RTC と RTM の関係を示します。上述したように、RTC はあるひとまとまりの機能をモジュール化したソフトウエアの断片であり、その実体は RTM 上で実行される共有オブジェクト (shared object)、DLL (dynamic link library) です。 RTC開発者は、自分が持っている制御アルゴリズムのコードや、既存のライブラリコード等 (コアロジックと呼ぶ) を、RTCBuilder 等のツールによって自動生成される RTC の雛型コードに埋め込み、コンパイル (スクリプト言語では不要)することで、RTC を作成します。

rtm_and_rtc_ja.png
RTC(RTコンポーネント)とRTM(RTミドルウエア)

モジュールの分割と統合

RTシステムは、複数のコンポーネントのポートをつなぎ合わせ、それぞれの RTコンポーネント機能の集合体として構築されます。対話・認識コンポーネントを例にとって考えてみます。 対話・認識コンポーネントは、ユーザーの声や表情を認識・観測して、音声や身振り手振りなどでユーザーと対話する機能を持つコンポーネントで、以下のサブコンポーネントから構成されているとします。

  • カメラコンポーネント
  • ステレオビジョンコンポーネント
  • 顔認識コンポーネント
  • マイクコンポーネント
  • 音声認識コンポーネント
  • 対話コンポーネント
  • 頭・腕コンポーネント
  • 音声合成コンポーネント
    rtcbased_hri_system_ja.png
    RTCより構成される対話・認識システムの例

上図のように、分割コンポーネントはそれぞれポートと呼ばれる他のコンポーネントと通信するインターフェースを持ち、データやコマンドのやり取りを行い、全体として一つのまとまった機能を実現します。 モジュール化することで、モジュール単位での並行開発、再利用、交換や更新、分離等が可能になるため、複雑さの軽減、開発効率の向上やシステムの柔軟性・拡張性・安定性の向上が期待できます。

開発の経緯

RTミドルウエア は、(独)新エネルギー・産業技術総合開発機構(NEDO)の21世紀ロボットチャレンジプログラム(2002~2004年度) のプロジェクトにおいて、そのコンセプトが提唱され、(独)産業技術総合研究所(産総研)、松下電工(現パナソニック電工株式会社)、(社)日本ロボット工業会により研究・開発・標準化が行われました。

プロジェクトの成果として、RTミドルウエアの参照実装である OpenRTM-aist-0.2 およびそのインターフェース仕様が公開されました。その後、国際標準化団体 OMG (Object Manegement Group: http://www.omg.org ) において RTCインターフェース仕様の標準化が進められ、2008年4月にOMG公式標準仕様となりました。この標準に準拠した RTミドルウエア実装の一つが2010年1月に公開された OpenRTM-aist-1.0 です。

RTC OMG標準

OpenRTM-aist の大きな特徴として、コンポーネントモデルとそのインターフェースが OMG という国際標準化団体で標準化されていることが挙げられます。

OMG は1989年に設立されたソフトウエア標準化団体であり、分散オブジェクトミドルウエア: CORBA (Common Object Request Broker Architecture)、ソフトウェアモデリング言語: UML (Unified Modeling Language) を始めとして、様々な分野のソフトウエア標準を策定・管理している組織として知られています。

RTCのインターフェース仕様も、CORBA 同様 OMG において、産総研と米国ミドルウエアベンダ RTI (Real Time Innovations) により標準化され、RTC(Robotic Technology Component) Specification (http://www.omg.org/spec/RTC/1.0/ ) として2008年4月に公式リリースされました。

標準化のメリットとして、標準に基づき多くのベンダ、開発者が自由にミドルウエアを実装することができる点が挙げられます。現在、OMG RTC 仕様に準拠、または一部準拠するミドルウエアとして、表に示す7種類(OpenRTM-aist の3種類の言語を含む) が存在します。

OMG RTC準拠のミドルウエア一覧

名称 ベンダー名 概要
OpenRTM-aist 産総研 C++、Python、Java の3種類
OpenRTM.NET (株)セック .NET による実装、OpenRTM-aistと互換性あり
OPRoS Project 韓国 ETRI 独自ミドルウエア上の実装
PALRO(パルロ) 富士ソフト株式会社 小型人型ロボットPARLO(パルロ)の制御ソフトウエアがC++言語レベルで互換
GostaiRTC GOSTAI/Thales OMG RTC Local PSMに準拠


このうち、通信を介して互換性がある物は、OpenRTM-aist と OpenRTM.NET のみですが、他の実装とは内部モデルが同一であるため、ブリッジ等を作り連携させた際にも、全体としての整合性に矛盾が生じることは少なくなります。 また、複数の組織による多様な実装が存在することで、用途に応じて適切な言語やライセンスを選択することも可能であり、ミドルウエアそのものの永続性も高くなります。