カスタムメッセージとは、ROS2のトピック通信の中でも、「複数のメッセージを同時に配信する方法」です

これがなぜ必要かというと、PCのように「クリックした後、できなりで処理が終わればよい」系とは違い、指示を送ったタイミングで遅延なく(厳密には許容される遅延内に)処理をしなければならないような系では、「ある時間時点での情報を同時にやり取りしなければ」いけないことが多々ある。

たとえば、でいえば「カメラの映像」に、距離情報を「超音波センサー」でのせるような場合、カメラの画像と超音波センサーのデータは同じ瞬間でないと「ずれてしまう」

そういう時に時間情報とカメラのデータと超音波センサーを同時にデータを転送する必要がある

そういう用途のために複数のデータをワンセットにして送信するのが「カスタムメッセージ」である


で、ROS2では、COLCONのワークスペース内にメッセージを定義するフォルダーを作って、型と名前をUTF-8でテキストで縦に羅列して記載した.msgファイルを作ってcolcon build、、、なのですが、(たぶんたくさん作成例がある)mros2の情報は少ないので記載しておく

基本的には、この.msgを流用する。

当然

mros2の目的はROS2のトピック通信網に「RTOSなマイコン(=ZONE-CUと呼ばれたりします)」を参加させることですので、当然、ROS2で先に.mesファイルは作られているはず!ではありますよね。


環境は、先に作成したmros2-mbedフォルダをワークとする標準環境とします

(23年の後半あたり以降と以前のリポジトリで、mros2-mbedの中のディレクトリ構成が変わっております。以下のような構成になった後の話だと思ってください。)

特にわかりやすいのは、workspaceの下にあったメッセージ関係のフォルダがmros2の下に移動していますので、この辺で判別がつきます。

ここではROS2でメッセージファイル(例:Mbed2rasppi.msg・・・メッセージファイル名は最初の1文字は大文字であることが規則らしい)を作ってあるとして・・・

まず、これをmros2ディレクトリ以下に

~/mros2-mbed/mros2/custom_msgs/mbed2rasppi_msg/msg/Mbed2rasppi.msg

のように設置する。

これを自動で組み込み用のソースコードに変換するツールがmros2-baseとして提供されており

~/mros2-mbed/mros2/

フォルダで

python3 ../mros2_header_generator/header_generator.py costom_msgs/mbed2raspppi_msg/msg/Mbed2rasppi.msg

とすることで、オートコーディングできる。

⇒~/mros2-mbed/mros2/custom_msgs/mbed2rasppi_msg/msg/に「mbed2rasppi.hpp」ができる。

これで、~/mros2-mbed/workspace/(hogehoge)/app.cppから利用ができるようになる。

利用の仕方はサンプルのapp.cppを見てもらいたい。