UnityとRaspberry PiをROSで繋ぐ

UnityとRaspberry PiをROSで繋ぐ

以前の記事でソケット通信でUnityからRaspberry Piにデータを送信できるようになりましたが、ROSを使うと非常に簡単に接続できたので備忘録として残しておきます。

セットアップ

Raspberry PiにはROSがインストールされているとして、Unity(Windows)側の準備を行います。UnityでROSを使用するにはROS#というライブラリを使います。具体的なセットアップの方法は下記のブログで紹介されています。

プログラム

今回はRaspberry Pi側がPublisher、UnityがSubscriberとします。Publisher側はrostopic pubで済ませるとして、Unity側のプログラムを作りました。ROS#のスクリプトの中に色んなデータをやり取りするPublisher、Subscriberのプログラムがあるのでそれを参考にしました。今回は単純に文字列を受け取ってコンソールに表示するだけの簡単な物です。

スクリプトは、空のオブジェクトを作ってRosConnectorと、上記のスクリプトをアタッチします。RosConnectorで通信先のRaspberry PiのIPアドレスを指定します。ポートは変えられるのかもしれませんが、デフォルトのままにしています。また、SubscribeTestではトピック名を指定します。

実行結果

Raspberry Pi側で下記のコマンドを実行してサーバーを実行した後、Unityを実行します。

その後、rostopic pubでメッセージを配信すると、Unity側で受信出来ていることが確認できます。

今回は文字列でしたが、ROS#のスクリプトを見ると画像もやり取り出来るようなので、とても使い道が多そうです。