はじめに
製品開発グループの野本です。
組込ソフトウェアエンジニアとしてデータ収集用端末のソフトウェア開発を担当しています。
今回はROSの取り組みの一環として、C++で任意のトピックをPublish/Subscribeする方法についてご紹介します。
- はじめに
- 背景
- 調査結果
- 性能測定
- topic_tools::ShapeShifterとは?
- (参考) rosbagはどうやって任意のトピックをSubscribeしているのか?
- JSON変換もしたい場合
- まとめ
背景
ROSは複数のノードがトピックを介してノード間通信を行っています。
ROSノードとROS以外のアプリケーションが通信する選択肢として、rosbridgeがあります。
rosbridgeはWebSocket、TCP、UDPに対応*1しており、TCPを使用する場合はrosbridge_tcpノードがTCPサーバーとして動作します。クライアントは指定したトピックのデータをJSONとしてPublish/Subscribeすることができますが、以下のような懸念点があります。
- JSON化するとデータが肥大化しやすい、データをそのまま扱う場合は変換処理が冗長(→生データのまま扱いたい...)
- pythonで動いておりパフォーマンスが不安(→C++で動かしたい...)
これらの懸念点を解決するため、以下のようにC++ノードで動作し、JSONではなくバイナリの生データで任意トピックのPublish/Subscribeをする方法について調査しました。
続きを読む