Unity側:ROS2 Unityとの通信

プロジェクト作成

特記事項なし

・パッケージマネージャーでgitからインターフェースをインストール

公式は以下のリンク

https://github.com/Unity-Technologies/ROS-TCP-Connector

パッケージマネージャーを起動し AddPackage from git URL を選択

AddPapage from Url

選択すると以下のような入力欄が出てくるので入力欄に

入力欄
https://github.com/Unity-Technologies/ROS-TCP-Connector.git?path=/com.unity.robotics.ros-tcp-connector

を入力”Addで追加”

Roboticsが追加される

入力し正常に終了するとメニューにRoboticsが追加される。

・ROSの設定

ROS Setting

追加されたメニューからROS Settingを選択。

Ros Setting Dialog

表示されたダイアログのProtocolをROS2に設定

・メッセージ登録

GeneralRosMessage

追加されたメニューのGeneralRosMessageを選択。

メッセージファイルのフォルダを選択

Browsでメッセージファイルのフォルダを選択する。

メッセージファイルビルド

Build msg でUnity用データの作成

メッセージファイルビルド後

処理が終わるとRbild msgに代わる

作られたメッセージファイル

buildするとプロジェクトのAssetsの中にメッセージファイルの作成される。

・パブリッシャー、サブスクライバースクリプト作成

以下のリンク先のサンプルがある

https://github.com/Unity-Technologies/Unity-Robotics-Hub/tree/main/tutorials/ros_unity_integration

メッセージファイルと通信プログラムの対応関係

ネームスペースとクラスの対応

メッセージファイルと、サブスクライバーのネームスペースとクラス対応関係は上の図の通り。パブリッシャーの時も同じ感じになる。

変数の適用

Usingを使用した場合はそのオブジェクトを適用

ROS2とUnityの通信の対応関係

ROS2とUnityの名前合わせ

ROS2のチュートリアルのパブリシャーやサブスクライバーの名前と、Unityのサンプルでは名前が一致していないので名前を合わせる必要がある。Unityでは名前を変数に代入してい使うとInspecterで指定した名前が優先されるので注意が必要。上の図はROS2パブリッシャーUnityサブスクライバーであるが、逆の時も同様である。

・実行

特記事項なし