本日はROS 2 Beta 2でサポートされた環境設定による複数RMW実装の変更の記事を取り上げます。

RMW実装の選択肢

以前説明したように、ROS 2はRMWという抽象化インタフェースを通すことで、DDSベンダーを選択できるようになっています。

http://ros.youtalk.jp/2017/06/22/freertps.html

http://roscon.ros.org/2016/presentations/ROSCon%202016%20-%20ROS%202%20Update.pdf

DDSは産業界で標準規格となっており、多くのDDSベンダーが実装を提供しています。 その中にはRTI社のConnextやeProsima社のFastRTPSがあります。 ROS 2は複数のDDS実装をサポートしています。 これはどれか一つの実装ではすべての要求を満足できないからです。 ライセンスの選択肢、プラットフォーム(OS)の選択肢、計算資源の必要度合いにより、各DDSベンダーは一つ以上のDDS実装を提供しています。

サポートされるRMW実装

製品名 ライセンス RMW実装名 現状
eProsima Fast RTPS Apache 2 rmw_fastrtps_cpp フルサポート、デフォルトRMW、Debianパッケージ提供
RTI Connext 商用ライセンス rmw_connext_cpp フルサポート、要ソースコードビルド
RTI Connext (動的実装) 商用ライセンス rmw_connext_dynamic_cpp サポート停止、ROS 2 Alpha 8までサポート
PrismTech Opensplice LGPL (v6.4)、商用 rmw_opensplice_cpp サポート停止、ROS 2 Alpha 8までサポート
OSRF FreeRTPS Apache 2 一部サポート、開発停止

デフォルトRMW実装

ROS 2のインストール時に、複数のRMW実装がある場合、デフォルトのRMW実装にはFastRTPSが選択されます。 もし複数のRMW実装の中にFastRTPSがない場合、RMW実装名のアルファベット順で最初の実装が選択されます。

RMW実装の環境設定

異なるRMW実装を選択するには、環境変数RMW_IMPLEMENTATIONを設定します。 値には表中のRMW実装名を代入します。

export RMW_IMPLEMENTATION=rmw_connext_cpp
ros2 run demo_nodes_py talker

ConnextのRMW実装のセットアップ手順などの情報がほとんどないため、私は他のRMW実装をまだ試せておりません。 しかし、ROS 2でフルサポートされている商用ライセンスのDDSベンダー、RMW実装があるというのは、ROS 2を組み込んだロボットシステムを販売したい企業にとって、将来役立つことでしょう。

https://github.com/ros2/rmw_connext