先日のROS 2のプロセス内(intra-process)通信を理解する (1)の続きです。

本日は以下に従って、実際にROS 2のプロセス内通信の実装方法を見ていきます。

https://github.com/ros2/ros2/wiki/Intra-Process-Communication#running-and-understanding-the-demos

このデモのソースコードは、プロセス内通信を使ったPub/Sub通信によってメッセージのゼロコピーができる仕組みについて理解することができます。

https://github.com/ros2/demos/blob/master/intra_process_demo/src/two_node_pipeline/two_node_pipeline.cpp

日本語のコメントを足したソースコードの抜粋を載せます。

Producerクラス

Consumerクラス

main関数

もう一つのデモにメッセージ変数をPublishの毎回のタイマーループの間で再利用し、一つのメッセージ変数だけでやり取りする方法についても、元記事では取り上げられています。

C++11, C++14

ROS 2はC++11と一部のC++14を使用しています。また、C++17が正式発表され次第、こちらにも順次対応していくそうです。

今回のソースコードでも、たくさんC++11/14の機能を使っているのですが、特にdecltype関数やstd::weak_ptrに関するコメントは正否が怪しいです。この機会に学び直していきます。