ROSをUnityとつなぐ その1 rosbridge_serverをセットアップする


UnityとRaspberry Pi上のROSをつなぐには?

ROS#というUnityで動くROSのC#で書かれたコネクタがあるようだが、そのためにはWebSocket経由でROSのパケットを外部とやり取りするrosbridge_serverをセットアップしなければいけない。
だが、インストール方法の説明が、OSのパッケージマネージャーを使う方法しかなく、自前でビルドしたROS環境での方法が説明されていない。
本稿ではソースからビルドして動かした過程を記載する。

rosbridgeの取得

Githubからクローンする。
ワークスペースのsrcフォルダで、クローンする。

$ git clone https://github.com/RobotWebTools/rosbridge_suite.git

手動で依存関係解決してビルド

これで、catkin_makeすればいいかと思いきや、足りないものがいくつかあるので、手動で依存関係を解決していく。

$ git clone https://github.com/ros/common_msgs.git

そしてビルド。ワークスペースのルートで。

$ catkin_make

実行すると、今度はPythonのライブラリがないといわれる。
仕方がないので、さらに手動で依存関係の解決。最初はpipさえ入っていなかったので、インストール。

$ sudo apt install python-pip

必要なPythonのライブラリなどをインストール

$ sudo pip install twisted
$ sudo apt install libffi-dev
$ sudo pip install pyopenssl
$ sudo pip install autobahn
$ sudo pip install service_identity

さらに、rosauthがないといわれるので、

srcで、

$ git clone https://github.com/GT-RAIL/rosauth.git

ワークスペースのルートで

$ catkin_make

さらに、まだ足りないといわれるので、

$ sudo pip install tornado
$ sudo pip install pymongo

なお、pymongoは、BSONが必要だったので、bsonをpipでインストールしたところ、エラーで動かず、調べたところ、このような記載を見つけたので、代わりにインストールした。

ここまででやっと実行できるようになった。

実行

$ roslaunch rosbridge_server rosbridge_websocket.launch

やったー

動いた

2019-12-15 17:19:54+0000 [-] [INFO] [1576430394.149245]: Rosbridge WebSocket server started at ws://0.0.0.0:9090