3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Zenohのメッセージ通信を使いやすくしたい記事

Posted at

はじめに

以前、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

成功すると以下のようなログが出るのでホームディレクトリにパッケージが作成されているはず。

Screenshot from 2024-01-15 08-51-23.png

vscodeで開いてみました。
詳しい実装ははじめに載せた記事を参考にしてください。

他の.msgを追加することもできるので実行します。

Motii.msg
string name
int32 id
float64 power

以下のコマンドを実行します

cargo run -- add hello_msgs Motii.msg

成功のログが出たあと、確認するとちゃんとできてますね。
Screenshot from 2024-01-15 11-04-34.png

今回は構造体の定義に加えserialize関数とdeserialize関数も作成するようにしました。
構造体メンバがpublicになっていないので後で修正します。

このパッケージをGithubに上げるなりして他のパッケージでも利用しましょう。

関連記事

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?