OpenRTM-aist

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動: 案内検索
OpenRTM-aist
ロゴ
開発元 産業技術総合研究所
最新版 1.1 / 2012年05月25日(22か月前) (2012-05-25
プラットフォーム クロスプラットフォーム
種別 ランタイムライブラリ
ライセンス LGPL
公式サイト http://www.openrtm.org/
テンプレートを表示

OpenRTM-aistは、RTミドルウエア規格に基づき開発されたロボット技術用のミドルウエアである[1][2][3]RTミドルウエアにかかわる規格の実装として、中心的に同規格策定を行っている独立行政法人産業技術総合研究所が主体となって開発を行っている。

概要[編集]

RTミドルウエアでは、アクチュエータセンサ、および知能化のためのアルゴリズムなどのロボットの技術要素を一つのコンポーネントとみなし、これをRTコンポーネント (RT-Component, RTC) と呼ぶ。RTコンポーネントは外部のRTコンポーネントと通信するためのポートを持っており、単一ないしは複数のRTコンポーネントを接続することで、ロボット技術を応用したシステムを構成することができる。したがってRTミドルウエアでは分散型アーキテクチャを採用しているといえる[4]

RTミドルウエアに関わる規格では、プラットフォーム独立モデル (PIM) としての規格が定められているため、CORBA.NET FrameworkEJBなどの分散技術に依存しないが、OpenRTM-aistは分散オブジェクト技術のCORBAをベースとして独自の拡張を行っており、OpenRTM-aistでの成果は再度、上位のRTミドルウエア関連規格の策定にフィードバックされる。

OpenRTM-aistの特徴は、OMGの規格で定められたRTコンポーネントに独自の拡張を行った機能を搭載しており、さらにRTコンポーネントの運用を助けるマネージャ (Manager) の機能が搭載されている。また、CORBAを採用したため複数の言語での開発が可能になり、さらに異なる言語で開発されたRTコンポーネント間の通信や状態管理が可能となった。また、厳密にいえばOpenRTM-aist本体とは異なるが、OpenRTM-aistの運用を助けるためのツール群が多数、産総研などからリリースされており、スケルトンコードの自動生成やRTコンポーネントの接続、状態遷移の監視などをグラフィカルに行うツールが揃っている。

OpenRTM-aistにおけるRTコンポーネント[編集]

RTコンポーネントは、OMGによって定められたRTコンポーネント規格に沿ったロボット技術を用いた機能要素を制御する要素単位をいう。OpenRTM-aistでは、外部との通信用ポートとしてデータポートサービスポートを規定している。さらにRTコンポーネントの実行状態を管理するための実行コンテキストや、RTコンポーネントの制御パラメータを変化させるコンフィグレーションが重要な概念といえる。

データポート[編集]

データポートとは、整数型や浮動小数点型で表現されるデータの送受信が主な用途であり、同じ型を持つデータポートならば接続、通信が可能になっている。

データポートで使用可能な主なデータ型
データ型 対応するC++データ型
TimedBoolean(Seq) bool型(配列)
TimedOctet(Seq) byte型(配列)
TimedChar(Seq) char型(配列)
TimedWChar(Seq) wchar型(配列)
TimedShort(Seq) short型(配列)
TimedUShort(Seq) unsigned short型(配列)
TimedLong(Seq) long型(配列)
TimedULong(Seq) unsigned long型(配列)
TimedString(Seq) string型(配列)
TimedWString(Seq) wstring型(配列)
TimedFloat(Seq) float型(配列)
TimedDouble(Seq) double型(配列)

これ以外に2012年7月現在で最新のバージョン1.1では,ExtendedDataTypeとして,ロボット固有のデータ型として,上記のプリミティブなデータの組み合わせを使ったデータ型が試験的に導入されている[5][6]. また,独自のIDLを記述すれば,独自なデータ型を定義することができる.

サービスポート[編集]

サービスポートとは、データポートで規定されるようなデータ通信に限らない、フレキシブルな通信が可能となっている。 サービスポートでは、CORBAの仕組みを応用して、サービスを利用するRTC側からの特定のリクエストに関して、結果を返り値として返却することが可能である。またデータの送受信を伴わない、たとえばリセットのような仕組みを提供することも可能である。

この機能を使うためには、サービスポートのインターフェースを規定するIDLを記述する必要があり、ほとんどCORBAの技術を直接応用した形での開発が可能になっている。

実行コンテキスト[編集]

RTコンポーネントの規格では、RTコンポーネントはCREATEDINACTIVEACTIVE、およびERRORの状態を持っており、各状態への遷移や、状態遷移に伴うアクションを管理するのが実行コンテキストである。 RTミドルウエアでは、実行コンテキストを定義することで、実行時に状態管理や実行周期のカスタマイズが可能になっており、RTコンポーネントの運用範囲を広げることに成功している。


OpenRTM-aistでは,Linuxカーネルプリエンプションを利用したリアルタイム実行コンテキストをサポートしており,実行時にリアルタイム性を持たせることが可能である.

コンフィグレーション[編集]

RTコンポーネントの制御にかかわるパラメータを動的に変更する仕組みとして提案されているのがコンフィグレーションである。コンフィグレーションは、整数型や実数型の数値のみでなく、文字列型も定義することができ、外部のプロセスと通信する方法としてデータポートとは異なるインターフェースを提供している。

対応OS[編集]

Windowsおよび各種LinuxMac OS Xで動作するライブラリが公開されている[7]。このほかにVxWorksでの実装が行われている[8]

使用言語[編集]

CORBAを用いたために複数の言語でのRTコンポーネント開発が可能となり、さらに異なる言語で開発されたRTコンポーネント間での通信が可能となっている。現在はC++言語Python、およびJavaでの開発がおこなわれている。またErlangでの実装も非公式ではあるが発表されている[9]

ツール群[編集]

OpenRTM-aistを使った開発を支援するためのツールが複数提案されている。

RTC Builder[編集]

RTC Builderの画面

OpenRTM-aistでは、RTコンポーネント開発においては、ライブラリで提供されているRTコンポーネントの規定クラスのメソッドをオーバーライドする形で開発するため、スケルトンコードの自動生成ツールが重要となっている。OpenRTM-aistではRTC Builderを提供しており、Eclipse上で必要事項を選択、および入力することで、LinuxおよびWindows (Visual Studio) で開発可能なスケルトンコードを自動的に生成することができる。

RTC BuilderではC++、Java、PythonでのRTコンポーネントのスケルトンコードの生成が可能であり、スケルトンコードやMakefileと併せて、RTコンポーネントプロファイルというXML形式のファイルを生成することができる。RTCプロファイルにはRTCのポートに関する情報や、コールバック関数に関する設定が記述されており、RTCのインターフェースに関する情報を交換する方法として用意されている。

RT System Editor[編集]

RT System Editorの画面

RTミドルウエアでは、RTコンポーネントの組み合わせと状態遷移によってロボット・システムの開発を行うが、ポートの接続および監視を行うツールも、RTコンポーネント運用の重要なカギとなってくる。OpenRTM-aistでは、RT System Editorを提供している。

RT System Editorでは、ネームサーバー上のRTコンポーネントの一覧の取得、RTコンポーネント間の接続、状態遷移、コンフィグレーションの変更などをグラフィカルに行うことができる。また、Managerを使って、遠隔からRTコンポーネントの起動、停止も可能になっている。接続やコンフィグレーションの状態はRT System ProfileというXML形式のファイルに保存することができ、次回からはRT System Profileをロードすることによって、RTシステムの状態を簡単に再現することができる。

rtshell[編集]

rtshellは産業技術総合研究所が開発したコンソール上でのRTコンポーネントの管理、運用ツールであり、コマンドライン上で実行することが出来る複数のコマンド群からなるツールセットである。

rtshellではRT System Editor同様に、RTCの実行、停止、状態遷移、ポートの接続のほかに、ポートの値のエコー、ポートへのデータの送信、ログの収集および再生、RT System EditorでのXMLファイルの読み込みによるRTシステムの構築などに対応しており、コマンドラインに慣れた技術者であればRTCのデバッグにも使えるツールになっている。

RTC Daemon[編集]

OpenRTM-aistにおけるManagerの機能のみを実装したプログラム。複数のRTCを読み込み、起動する機能がある。


実際には、実行形式でコンパイルされたRTCではManagerの機能を利用しており、設定ファイルであるrtc.confを編集する事でも複数のRTCを起動する事ができる。

OpenRTM-aistを利用している(または利用予定の)ロボット[編集]

OpenRTM-aistに関連したソフトウエア[編集]

ライセンス[編集]

EPLおよび産総研と個別に契約するライセンスのデュアルライセンス方式を採用している。

関連項目[編集]

参考文献[編集]

  1. ^ 安藤慶昭, 初心者のためのRTミドルウェア入門―OpenRTM-aist-1.0とその使い方―, 日本ロボット学会誌, Vol.28, No.5, pp.550-555, 2010
  2. ^ 水川 真, 坂本 武志, 大原 賢一, UMLとRTミドルウェアによるモデルベースロボットシステム開発, オーム社,2009年
  3. ^ 長瀬 雅之, 中本 啓之, 池添 明宏,はじめてのコンポーネント指向ロボットアプリケーション開発「RTミドルウエア超入門」,毎日コミュニケーションズ,2008年
  4. ^ Robotics Technology Component Specification version 1.0, Object Management Group (OMG)
  5. ^ OpenRTM-aist旧ウェブサイト, http://www.openrtm.org/OpenRTM-aist/html/E382B3E383B3E3839DE383BCE3838DE383B3E38388.html, 2010年3月更新
  6. ^ 安藤慶昭, 栗原眞二,ビグズジェフ,神徳徹雄,"RTコンポーネントはどのように作れば良いか", http://www.openrtm.org/rt/RTMcontest/2010/2B3-1_2up.pdf
  7. ^ OpenRTM-aist公式ウェブサイト, http://www.openrtm.org
  8. ^ 池添 明宏, 中本 啓之, 長瀬 雅之, OpenRT Platform/RT ミドルウェアのVxWorks 対応, 日本機械学会ロボティクス・メカトロニクス講演会2010
  9. ^ Erlang版OpenRTM-aist [1]
  10. ^ 産総研リリース:RTミドルウエアOpenRTM-aist バージョン1.0をリリース,http://www.aist.go.jp/aist_j/press_release/pr2010/pr20100128/pr20100128.html
  11. ^ OpenHRP3 Official Site,http://www.openrtp.jp/openhrp3/jp/
  12. ^ Pattern Weaver for RT-middleware,http://pw.tech-arts.co.jp/pw/rt_middleware/index.html
  13. ^ ZIPC-RT,http://www.zipc.com/special/zipc_rt/

外部リンク[編集]