カスタムメッセージとは、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を見てもらいたい。