ROS2ForUnityのチュートリアル

2025年01月19日

はじめまして! B3の松田侑也です。
僕が研究で使用している、ros2-for-unityというライブラリについて書こうと思います。

ros2-for-unityはUnityとROS2間の通信を可能にします。
UnityとROS2間で無駄な変更プロセスが無く高速通信ができます。
(参考:https://zenn.dev/hakuturu583/articles/ros2_for_unity )

ビルド

ROS2はインストールされているものとして話します。

自分の環境

・ROS2 Humble
・Ubuntu 22.04

1.ROS2CSのインストール

ros2-for-unityビルドするためには、ROS2CSがインストールされている必要があります。
インストールの前に様々な依存パッケージをインストールする必要もあります。
そのため、以下を参考にしながらインストールを完了します。
github:ROS2CSのビルド手順

2.ros2-for-unityのインストール

・ros2-for-unity のリポジトリをクローンします。

git clone git@github.com:RobotecAI/ros2-for-unity.git ~/ros2-for-unity

・その後、以下を参考にして進めてください。ROS2のディストリビューションを自身と同じにするのを忘れないように注意しましょう。以下サイトではgalacticとなっています。 github:Ubuntu環境でのros2-for-unityビルド手順

./build.sh --standaloneでビルドをしてエラーがでなければ完了です。

・以下の方法で.unitypackageを作文することを推奨します。

create_unity_package.sh -u <your-path-to-unity-editor-executable>

動作確認

正しく動作するのか、Unityでデータを送信できるのか確認します。
1.Unityで3Dプロジェクトを作成します。

2.Assets -> Import Package -> Custom Packageの手順で、
先ほど作成したRos2ForUnity.unitypackageをインポートします。

3.ROS2ForUnityフォルダが作成されるので、ROS2ForUnity/Scriptsからオブジェクトに以下のスクリプトをアタッチする。
ROS2UnityComponent.csこのスクリプトはすべてのノードを管理します。
ROS2TalkerExample.cs パブリッシャーを作成し、メッセージデータを発信します。

↓オブジェクトにスクリプトをアタッチした様子 img

4.Unityのプロジェクトを実行し、ROS2でros2 topic echo /chatterを実行します。 そうすると、Unityからメッセージを受信できます。

↓ROS2がUnityからメッセージを受信している様子 img

補足:Unity側でメッセージを受信したいときはROS2ListenerExample.csを使えばできます。

終わりに

ここまで長々と説明しましたが、どうやらビルド済みros2-for-unityの.zipが以下にあるようです。
ビルド済みros2-for-unity
僕は試していないので、解凍してそのまま使えるのかは不明です。どちらにせよROS2CSのインストールは必要になると思います。ぜひ試してみてください。

ここまで読んでくれた皆さんがros2-for-unityを研究や開発に活用してくれたら幸いです。
今後はもっと高度な内容の記事を書けるように日々精進したいと思います!