はじめに
以前、Zenohで以下のようなメッセージ通信の記事を書いた人です。
この度はメッセージの定義を容易にしてくれるツールを作成したので紹介する記事です。
実装
がっつりRustで実装しました。
ROS2のメッセージを書くときに使う.msgを使って生成できるようにしました。
Hello.msg
float64 x
float64 y
float64 z
bool enable
こちらをzenoh_msg_generatorのCargo.tomlと同じディレクトリ配下に置いたら実行します。
まずはパッケージの新規作成を行うので、オプションにnewを指定します。
また、その次にパッケージ名、最後に.msgのファイル名を与えます。
cargo run -- new hello_msgs Hello.msg
user@user-Laptop:~/zenoh_msg_generator$ cargo run -- new hello_msgs Hello.msg
Finished dev [unoptimized + debuginfo] target(s) in 0.00s
Running `target/debug/zenoh_msg_generator new hello_msgs Hello.msg`
[ZenohMsgGenerator][INFO]:Start Generator
[ZenohMsgGenerator][INFO]:create lib.rs
[ZenohMsgGenerator][INFO]:Get .msg file contents
[ZenohMsgGenerator][INFO]:create msg.rs
[ZenohMsgGenerator][INFO]:Successfull generate
成功すると以下のようなログが出るのでホームディレクトリにパッケージが作成されているはず。
vscodeで開いてみました。
詳しい実装ははじめに載せた記事を参考にしてください。
他の.msgを追加することもできるので実行します。
Motii.msg
string name
int32 id
float64 power
以下のコマンドを実行します
cargo run -- add hello_msgs Motii.msg
今回は構造体の定義に加えserialize関数とdeserialize関数も作成するようにしました。
構造体メンバがpublicになっていないので後で修正します。
このパッケージをGithubに上げるなりして他のパッケージでも利用しましょう。
関連記事