OpenRTM-aist
サービスポートとは、データポートで規定されるようなデータ通信に限らない、フレキシブルな通信が可能となっている。 サービスポートでは、CORBAの仕組みを応用して、サービスを利用するRTC側からの特定のリクエストに関して、結果を返り値として返却することが可能である。またデータの送受信を伴わない、たとえば状態遷移命令のような仕組みを提供することも可能である。
この機能を使うためには、サービスポートのインターフェースを規定するIDLを記述する必要があり、ほとんどCORBAの技術を直接応用した形での開発が可能になっている。
OpenRTM-aistでは、CORBAをベースにした実装が行われているが、データポートでの通信はCORBAの通信のみではなく、他の複数の通信方法に対応できる実装となっている。この通信方法を設定するのがインターフェース型の選択である。
2019年に公開されたバージョン1.2.0では、デフォルトでCORBA通信以外に、共有メモリ通信と、ダイレクト通信をサポートする。
共有メモリ通信では、通信する複数のRTコンポーネントが、同一のホスト上で実行されている場合にのみ選択することができ、OSが提供する共有メモリ機能を使ってデータを送受信することができる。
また、ダイレクト通信では、マネージャーの機能を使って、同一プロセス上で実行された複数のRTコンポーネント間で通信するときのみに選択することができ、CORBA通信を経由せずに、データのポインタのみの受け渡しを行うため、非常に高速な通信が可能となっている。
さらに、OpenRTM-aistのデータポートは、基底クラスをカスタマイズして動的にロードする機能が備わっており、CORBAに限らない通信に対応させる場合にこの方法が使われる。これまでにDDSトランスポート やROSトランスポート などが実装され、公開されている。