ROS 2のプロセス内(intra-process)通信を理解する (2)
先日のROS 2のプロセス内(intra-process)通信を理解する (1)の続きです。
本日は以下に従って、実際にROS 2のプロセス内通信の実装方法を見ていきます。
https://github.com/ros2/ros2/wiki/Intra-Process-Communication#running-and-understanding-the-demos
このデモのソースコードは、プロセス内通信を使ったPub/Sub通信によってメッセージのゼロコピーができる仕組みについて理解することができます。
日本語のコメントを足したソースコードの抜粋を載せます。
Producerクラス
Consumerクラス
main関数
もう一つのデモにメッセージ変数をPublishの毎回のタイマーループの間で再利用し、一つのメッセージ変数だけでやり取りする方法についても、元記事では取り上げられています。
- https://github.com/ros2/ros2/wiki/Intra-Process-Communication#the-cyclic-pipeline-demo
- https://github.com/ros2/demos/blob/master/intra_process_demo/src/cyclic_pipeline/cyclic_pipeline.cpp
C++11, C++14
ROS 2はC++11と一部のC++14を使用しています。また、C++17が正式発表され次第、こちらにも順次対応していくそうです。
今回のソースコードでも、たくさんC++11/14の機能を使っているのですが、特にdecltype
関数やstd::weak_ptr
に関するコメントは正否が怪しいです。この機会に学び直していきます。
This post is licensed under CC BY 4.0 by the author.
Comments powered by Disqus.