ROSとROS2の通信
DDS(Data Distribution Service)に関しての記事です。
最後にはROS2でのリモートデータ通信のやり方も提示しています。
ROSとROS2の違い
ROSではSSHの接続によりデータの送受信を行なっていました。
しかし、ROSでは独自のパッケージ実装により、
その信頼性は低いのが現状です。
その点を克服したのがROS2であり、RMWです。
RMWはDDS(Data Distribution Service)を裏で利用し、ワイヤ相互運用性プロトコルを通じてデータの送受信を行います。
これは、UDPという信頼のできないトランスポートを通じて通信を行うことを目的に設計されています。
そのため、リモートで高速な通信が可能というメリットがあります。
反対にデータの欠損が発生してしまうことがあります。
また、DDSは
・軍事
・宇宙
・大規模インフラ
で既に使用されているため、信頼性という点ではROSよりも上をいっているのがわかります。
https://www.co-nss.co.jp/products/middleware/dds.html
こちらを参照していただければ幸いです。
実行
必要なセットアップを行います。
[ PC1 , PC2 ]
export ROS_DOMAIN_ID="好きな数字"
以上で設定は完了です。
同一のネットワークに所属していれば、
以下の操作によりNodeとTopicが見えます。
[ PC1 ]
ros2 run demo_nodes_cpp talker
[ PC2 ]
ros2 run demo_nodes_cpp listener
まとめ
今後は非力なマイコンをロボットには搭載し、
必要な時にのみ外部へ重い処理を委託することが、
より簡単に行うことができます。
ありがとうございました。