ROS 2とDDS相互運用性:シームレス統合のための実践ガイド
ROS 2は基盤通信層にDDSを採用していますが、ネイティブDDS展開とROS 2の間で完璧な相互運用性を達成するには、依然として微妙な課題が存在します。このガイドは、「Bouncy Bolson」(2018年7月)ROS 2リリース時点で実証済みの実践的手順と設定調整をまとめ、チームが一般的な落とし穴を回避し、ROS 2内でConnext DDSの全機能を活用できるよう支援します。
ROS 2の現状
ROS 2は急速に進化するフレームワークであり、将来のリリースで追加の相互運用性ニュアンスが導入される可能性があります。しかし、rmw_connext_cppRMWレイヤーでROS 2を実行する場合、依然としてネイティブConnext DDSスタックを使用しています。つまり、ROS 2の高レベル抽象化を享受しながら、細粒度QoS制御やマルチトランスポートサポートなどConnextの全先進機能を保持できます。
主要相互運用性設定
トピック名とパーティション
ROS 2はトピックの名前空間をトピック名またはDDSパーティションにエンコードします。すべてのROS 2ユーザートピックは「rt」(ROS Topic)名前空間に存在します。DDSではこれは以下のように表現されます:
トピックデータ型
Connext RMWレイヤーがアクティブな場合、ROS 2はすべての「rt/*」トピックを汎用シリアライゼーション型でアドバタイズします。その結果、オリジナルの強く型付けされたデータを公開する純粋なDDSアプリケーションはQoSミスマッチを経験し、接続できません。
最も直接的な解決策は、ROS 2参加者からの自動型コード公開を抑制することです。ROS 2ノードを起動するディレクトリにUSER_QOS_PROFILES.xmlファイルを追加します。型コードを隠し、タイプオブジェクト共有を無効化する最小構成は以下の通り:
信頼性設定はアプリケーションに合わせて調整してください。上記例では出発点として「Best Effort」を使用しています。
このQoSファイルは、同じディレクトリから起動されるROS 2ノードにのみ適用されます。分離設定が必要な場合は、各ノードの起動フォルダ横に専用のUSER_QOS_PROFILES.xmlを配置してください。
トランスポート選択
DDSシステムとROS 2システムが同一ネットワークを共有する場合、欠落または未サポートトランスポート(例:udpv4のみサポートの参加者でudpv6不可)に関する警告が出ることがあります。こうした警告を回避し確実な接続性を確保するには、トランスポート設定を明示的に構成します。
USER_QOS_PROFILES.xmlで<participant_qos>内に<transport_builtin>マスクを追加し、許可トランスポートを定義:
<participant_qos>
<transport_builtin>
<mask>UDPV4|SHMEM</mask>
</transport_builtin>
</participant_qos>
- 起動ディレクトリに
NDDS_DISCOVERY_PEERSファイルを作成し、検出したいピアアドレスをリスト。マルチキャストディスカバリを無効化するカンマ区切り例:
localhost,192.168.1.12,shmem://
ROS 2でのRMWレイヤー選択
ROS 2ノード起動前に、RMW_IMPLEMENTATION環境変数をrmw_connext_cppに設定してください:
export RMW_IMPLEMENTATION=rmw_connext_cpp
またはノード起動時にインラインで指定:
RMW_IMPLEMENTATION=rmw_connext_cpp ros2 run demo_nodes_cpp talker
非境界シーケンスと文字列
一部のROS 2トピックには非境界シーケンスや文字列が含まれます。DDSアプリケーションがこれらのトピックを消費/公開する必要がある場合、DDSコードジェネレータで「Unbounded Support」を有効化してください。コード生成時にこのオプションを切り替える方法はRTIドキュメントをご参照ください。
RTIとの次のステップ
現在のROS 2機能セットの一時的ギャップ—トピックデータの記録と再生—については、このシリーズの次回で取り上げます。その間、堅牢なDDSバックドROS 2ソリューションの展開準備ができているなら、RTIエキスパートにお問い合わせください。設定チューニングと市場投入加速をお手伝いします。
モノのインターネットテクノロジー
- 専門的な重機フィールドサービス・現場修理:迅速な復旧で作業を再開
- レーザーマーキング総合ガイド:種類、メリット、用途
- ROSロボット:Raspberry Piでターミナル操作ナビゲーション
- ラピッドマニュファクチャリング:カスタム・少量部品の生産加速
- PCBスティフナー完全ガイド:フレックスPCBの補強マスター
- OpenDDS vs RTI Connext DDS:適切なデータ配布サービスソリューションの選択
- RTI Recording ServiceとDDSによるROS 2 LiDARデータのリプレイ
- ROS 2 Bouncy Bolsonに無償RTI Connext DDS搭載:接続性と診断を強化
- QtとDDSの統合:スケーラブルなIoTアプリケーションの構築
- IoTがフィールドサービスに革命:予知保全と高ROIを実現
- 産業用IoTプラットフォーム購入ガイド:専門家のヒントと意思決定チェックリスト