OpenRTM.NETの概要

OpenRTM.NETとは

OpenRTM.NETは、OMGのRTC Specification 1.0に準拠したRTミドルウェア実装です。

RTミドルウェアでは、ロボットの機能要素をRTコンポーネントという単位にモジュール化し、 そのモジュール化を再利用することで、ロボットシステムの開発効率を向上させようとしています。 しかし、現状では十分にモジュールがそろっておらず、まだまだ効率的にロボットシステムを開発することは言えません。 そこで、OpenRTM.NETでは、まずはRTコンポーネント自身の開発効率を向上させ、 RTコンポーネントの数をそろえるところから始めようと考えています。 そのために、RTコンポーネントの開発を効率化するためするための機能を多く備えています。

OpenRTM.NETは以下のような特長を持っています。

  • OpenRTM.NETの提供するカスタム属性を利用することで、従来よりも簡潔にRTコンポー ネントの実装が可能になります。
  • IDLを記述する必要がなく、C#やVisual Basicなどのプログラミング言語を利用して、 サービスポートのインタフェースや、データポートで送信するデータ型を定義するこ とができます。
  • OpenRTM-aist-1.0.0との相互接続が可能です。OpenRTM.NETで開発されたRTコンポー ネントは、OpenRTM-aist-1.0.0で開発されたRTコンポーネントと連携して動作するこ とが可能です。
  • Microsoft .NET Framework環境の豊富なライブラリを利用することで、効率良くRTコ ンポーネントを開発することができます。
  • C#、F#、Visual Basic、C++/CLIなど、.NET Framework開発環境で利用できる多様なプログ ラミング言語で開発することができます。
  • 通信プロトコルとして、CORBAとSOAPを選択することができます。また、通信を行わな いLocalを利用することもできます。
  • Windowsだけではなく、Monoなどの共通言語基盤(CLI)の実行環境が動作するプラット フォームでも、RTコンポーネントを実行することができます。

このような特長を持つOpenRTM.NETは、リアルタイムなロボットやデバイスの制御よりも、 ロボットのステータスモニターや動作指示用のツールなど、ロボットシステムの上位アプリケーションを 開発するのに向いています。また、ロボット用のアプリケーションだけではなく、 一般的なネットワークアプリケーションの開発にも利用できるでしょう。

もちろん、OpenRTM.NETを使って、数十ミリ秒程度の周期でデバイスを制御したり、 データ処理をするアルゴリズムを実行したりすることも可能ですが、 WindowsやLinux自体がリアルタイムに動作するOSではないため、 モータ制御などの数ミリ秒以下の精度を要求される処理には向いていません。 したがって、デバイスやロボットの制御は、RT-LinuxやART-Linux、μITRONなどのリアルタイムOS上でOpenRTM-aistを使用し、 ロボットシステムのモニタリングツールはWindows上のOpenRTM.NETを使うといった使い分けをするのが良いでしょう。

_images/rtm_architecture.png

OpenRTM.NETのアーキテクチャ

OMGにおける標準化

RTミドルウェアにおけるRTコンポーネントの仕様は、OMG(Object Management Group)という国際標準化団体において、標準化されています。

OMGにおける標準化では、MDA(Model Driven Architecture)という考え方で標準化が行われています。 下図に示すように、プラットフォーム独立モデル(PIM:Platform Indeped Model)と、プラットフォーム 特化モデル(PSM:Platform Specific Model)と、実装が別のレイヤーとして分かれています。

OpenRTM.NETでは、OpenRTM-aistと同じCORBAモデルに加え、SOAPモデルとLocalモデルを実装しています。

_images/rtc_specification.png

OMG RTC Specification