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の状態マシンを管理する実行コンテキストによって、対応するイベントハンドラが呼び出されます。
例えば、「on_activated」コールバック関数は、RTCがアクティブ化されたとき(INACTIVE状態からACTIVE状態になったとき)に呼び出されます。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)に基づいてライセンスされています。