harumi2

✏️ Edit this page on GitHub

harui2 test_1

// Title: RTミドルウエア #contents #clear

RTミドルウエア (RTM)

50%,center
夏の思い出

fooooooooooooooooooooooooooooooooooooo

50%,center
50%,center

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ミドルウエアです。

50%,center
50%,center

CENTER: 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を作成します。

40%,center
40%,center

CENTER: RTC(RTコンポーネント)とRTM(RTミドルウエア)

モジュールの分割と統合

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

  • カメラコンポーネント
  • ステレオビジョンコンポーネント
  • 顔認識コンポーネント
  • マイクコンポーネント
  • 音声認識コンポーネント
  • 対話コンポーネント
  • 頭・腕コンポーネント
  • 音声合成コンポーネント
50%,center
50%,center

CENTER: 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種類の言語を含む)が存在します。

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

#br

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