ロボットシステム構築用のミドルウェアには代表的なものとしてROSやROS2、OpenRTM-aist等いくつか種類があり、ミドルウェア毎に採用されている通信インタフェースも様々です。

この中でOpenRTM-aist ver.1.1.2は、コンポーネントと呼ばれるロボットシステムの部品間で通信を行う際の通信インタフェースとして通常、CORBAという分散システム用のOMG標準規格を採用しています。

CORBAではIIOPというプロトコルが定義されており、これを用いることでTCP/IPネットワーク上で通信可能なロボットシステムも構築できます。

ただし、CORBAの基礎技術はRPCであり、呼び出す側であるクライアントと呼び出される側であるサーバは密な関係にあり、このためクライアントからはサーバが見えている状態でなければ通信はおろか接続もできません。

もしサーバがNATルータの内側にあったり、Firewallで守られていたら(CORBA用の通信ポートが閉じていたら)外部にいるクライアントはサーバを見つけることができず、通信は成り立たなくなってしまいます。

このCORBAでは難しかったNAT越えやFirewall越えの問題は、MQTTというデータを仲介するサーバ付きのクライアント間メッセージングプロトコルを用いれば簡単に解決できます。

この点、OpenRTM-aistは他のロボットミドルウェアと比べると柔軟にできており、通信インタフェース用の外部モジュールを別途用意すれば、通信プロトコルを例えばCORBAからMQTTに切り替え可能な機能を元から備えています。

通常、ロボットミドルウェアとは別の通信インタフェースのシステムと通信を行う場合、プロトコルの変換を行うGatewayコンポーネント(ROSで言えばGatewayノード)を用意しなければいけないのですが、通信インタフェースそのものを用途に応じて入れ替えられることがOpenRTM-aistの強みの一つと言えるのではないでしょうか。

復興支援センター
特別研究支援者
吉野 大志