ROS#:UnityとROSの接続
UnityでARやVRのインターフェースを作って、ROSで動作するロボットと通信したかった。今回はROS#(ros sharp)を使ってみる。
動作環境[1] - WindowsとUbuntu
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
にある。
Inspector windowに表示されるOther Settings/Configuration/Scripting Runtime Version
を.Net 4.x Equivalentに設定。
Import
公式リポジトリかAsset storeからimportできる。
RosConnectorの設定
Assets/RosSharp/Scripts/RosCommunication/RosConnector
をGameObjectにアタッチ(下画像ではRosConnectorという名前のObject)。Ros Bridge Server UrlにROSを起動しているPCのipアドレスを入力する。
ポート番号はデフォルトが9090なので:
以降は通常気にしなくて良い。
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する際はこちら。
ロボットに搭載されたカメラ映像を見る際にオススメ。
参考
ROS#公式wiki
ROS# v1.2c以前の手順
更新
2019年06月11日
v1.4も同様の手順で動作したので動作環境に追記した。