クワマイでもできる

クワマイでもわかる

ROS#:UnityとROSの接続

UnityでARやVRのインターフェースを作って、ROSで動作するロボットと通信したかった。今回はROS#(ros sharp)を使ってみる。

動作環境[1] - WindowsUbuntu

Unity動作用にWindows PC、ROS動作用にUbuntu PCを用いました。

  • Unity動作用PC
    • Windows 10
    • ROS# v1.3
    • Unity 2018.2.17f1
  • ROS動作用PC
    • Ubuntu16.04
    • ROS Kinetic Kame

動作環境[2] - Ubuntu

Ubuntu PCにUnityを入れても同様の手順で動作しました。
GAZEBO等のシミュレータと連携させる際にオススメです。

  • Ubuntu16.04
  • ROS Kinetic Kame
  • ROS# v1.4
  • Unity 2018.4.0f1

ROS# v1.3, v1.4はUnity2018.2.6以降に対応している。
それ以前のUnityを使う際はROS# v1.2cが使える。

ROS#のセットアップ

Scripting Runtime Versionの設定

この手順はROS# v1.3以降から必要になった。設定項目はEdit/Project Settings/Playerにある。

f:id:kuwamai:20181128171925p:plain

Inspector windowに表示されるOther Settings/Configuration/Scripting Runtime Versionを.Net 4.x Equivalentに設定。

f:id:kuwamai:20181128171141p:plain

Import

公式リポジトリかAsset storeからimportできる。

RosConnectorの設定

Assets/RosSharp/Scripts/RosCommunication/RosConnectorをGameObjectにアタッチ(下画像ではRosConnectorという名前のObject)。Ros Bridge Server UrlにROSを起動しているPCのipアドレスを入力する。 ポート番号はデフォルトが9090なので:以降は通常気にしなくて良い。

f:id:kuwamai:20181125211312p:plain

Rosbridge serverのインストール

ROSを起動するPCのターミナルに下記コマンドを入力。

$ sudo apt-get install ros-kinetic-rosbridge-server

接続の確認

下記コマンドでRosbridge serverを起動。

$ roslaunch rosbridge_server rosbridge_websocket.launch

正常に起動すると最後に以下の出力が表示される。ポートが9090になっていることがわかる。

[INFO] [1543148743.067570]: Rosbridge WebSocket server started on port 9090

Unityを実行すると、Rosbridge server側に接続が通知される。切断も同様。

[INFO] [1543148773.264767]: Client connected.  1 clients total.
[INFO] [1543148776.534702]: Client disconnected. 0 clients total.

ROS#関連記事

ROSのセットアップはこちら。

ROS#のMessage type追加方法はこちら。

ROS#でObjectの位置姿勢をPublishする際はこちら。
AR, VRにオススメ。

ROS#でカメラ映像をSubscribeする際はこちら。
ロボットに搭載されたカメラ映像を見る際にオススメ。

参考

更新

2019年06月11日

v1.4も同様の手順で動作したので動作環境に追記した。