| OpenRTM-aist | |
|---|---|
| 開発者 | 産業技術総合研究所 |
| 安定版リリース | 1.2.1 / 2019年11月25日 ( 2019-11-25 ) |
| 書かれた | C++、Java、Python |
| プラットフォーム | Windows、Linux、macOS、VxWorks、TOPPERS(ITRON)、QNX |
| タイプ | 図書館 |
| ライセンス | LGPL |
| Webサイト | www.openrtm.org |
OpenRTM-aistは、 RTミドルウェア標準規格に基づいて開発されたソフトウェアプラットフォームです。[ 1 ] OpenRTM-aistは、産業技術総合研究所によって開発されており、同研究所はRTミドルウェア標準規格の策定にも貢献しています。
RTミドルウェアでは、アクチュエータやセンサーといったロボット技術要素はすべてRTコンポーネント(RTC)として扱われます。各RTCは他のRTCと通信するためのポートを備えており、開発者は独自のロボット技術(RT)システムをRTCとして実装することができます。このように、RTミドルウェアは分散制御アーキテクチャとみなすことができます。[ 2 ]
RTミドルウェアは、本来プラットフォーム非依存モデル(PIM)です。このモデルの実装には、CORBA、Enterprise JavaBean(EJB)、. NET Frameworkなどがあります。OpenRTM-aistはCORBA技術をベースとし、拡張RTC仕様を実装しています。OpenRTM-aistで得られた知見は、RTミドルウェアの標準化プロセスにフィードバックされます。
OpenRTM-aistは、RTCの拡張機能を実装しており、RTCの操作を支援するマネージャコンポーネントも含まれています。OpenRTM-aistのRTCは様々なプログラミング言語で実装でき、異なる言語でプログラミングされたRTC同士が通信することも可能です。また、産業技術総合研究所とその協力者によって、RTCの操作を容易にするツールも多数公開されています(厳密には、OpenRTM-aist自体はライブラリであり、これらのツールは含まれていません)。
RTコンポーネントは、OMGが定めるRTコンポーネント仕様に準拠した機能単位です。OpenRTM-aistでは、RTCはデータポート、サービスポート、そしてRTCの状態を制御する実行コンテキストを持ちます。
RTコンポーネントの標準規格では、RTCはCREATED、INACTIVE、ACTIVE、ERRORの4つの状態を持つ必要があります。状態が変化すると、RTCの状態マシンを管理する実行コンテキストによって、対応するイベントハンドラが呼び出されます。
例えば、RTCがアクティブになったとき(INACTIVE状態からACTIVE状態になったとき)に、「on_activated」コールバック関数が呼び出されます。on_activatedコールバックには初期化コードが実装されています。
一方、「on_deactivated」コールバック関数は、RTCが非アクティブ状態(ACTIVE状態からINACTIVE状態)になったときに呼び出されます。このコールバック関数には、終了処理のコードが実装されています。
"on_execute" は、RTC が ACTIVE 状態のときに定期的に呼び出されます。ここでは、制御関数やデバイス管理関数(例:ポーリング)が呼び出されます。
これらのコールバックは「実行コンテキスト」オブジェクトによって呼び出されます。RTCに特別な実行コンテキストがアタッチされている場合、呼び出しメソッドまたはポリシーが変更されます(実行コンテキストのセクションを参照)。
データポートは、他のRTCと通信するためのエンドポイントです。データポートにはタイプがあり、同じタイプのポート同士は接続可能です。
OpenRTM-aistでは、基本的なデータ型(「TimedLong」、「TimedDouble」など)が実装されています。さらに、OpenRTM-aistバージョン1.0からは、ロボットシステムで一般的に利用されることが予想される追加のデータ型(「TimedVelocity2D」、「TimedPose2D」など)がExtendedDataTypeとしてリリースされました[ 3 ] 。
開発者はIDLファイルを記述することで独自のデータ型を定義できます。ツールはIDLファイルを解析し、元のデータ型のスケルトンファイルとスタブファイルを自動生成します。
サービスポートはデータポートよりもはるかに柔軟な通信を可能にします。開発者はIDLファイルを作成してサービスポートインターフェースを定義する必要があります。
実行コンテキストは、RTコンポーネントのステートマシン操作を司ります。OpenRTM-aistでは、いくつかの種類の実行コンテキストが提供されています。例えば、
設定は、実行時にRTCのパラメータを動的に変更する機能です。設定は数値または文字列で指定できます。
OpenRTM-aistはWindows、Linux、macOSで動作します。[ 5 ]さらに、VxWorksも試験的にサポートされています。[ 6 ]
OpenRTM-aist はCORBAテクノロジーをベースとしているため、 C++、 Java、 Python、 Erlang (非公式) などのさまざまなプログラミング言語をサポートしています。

RTC Builderは、Eclipse開発環境から起動するスケルトンコード生成ツールです。OpenRTM-aistは、コマンドライン型のスケルトンコード生成ツールであるRTC-templateもサポートしています。

RT システム エディターは、RTC を操作するためのツールです。RT システム エディターは以下のサービスを提供します。
rtshellは以下のサービスを提供するコマンドラインツールである: [ 7 ]
RTCデバッガーはRTC用のデバッグツールです。RTCデバッガーはEclipseプラグインです。[ 8 ]
OpenRTM-aist は、GNU Lesser General Public License (LGPL) に基づいてライセンスされています。