はじめに
みなさんはmyCobotというロボットアームを知っていますか?
衝撃的な値段のロボットアームで、「実質無料」とも言われてきました。Googleで「myCobot 実質無料」で検索するとたくさんの人が実質無料でmyCobotを手に入れていることがわかります(?)
ROSのMoveIt!と連携してUnityでも動くらしい。ROSだとgazeboとかのシミュレータが動かしやすくて有名ですよね。Unityでも動かすことができるらしいというツイートを見つけ、このようなコメントを見ました。
「仮想環境でも多分大丈夫ですけど、未確認…」
ということで、WSL2上のUbuntuとWindows上のUnityでやりました。
環境
- Windows 10 Home
- Unity 2020.3.8f1
WSL2
- Ubuntu 18.04
- ROS Melodic
手順
基本的に、先ほど紹介したツイートにあったこの記事のとおりに進めていきます。
特に、Ubuntu上でのROSのセットアップなどは以下の記事の通りなので、説明などは省略しながら進めていきます。
また、WSLとROSのインストールが済んでいる方は MoveItのインストール辺りからの作業になるかと思います。
Windows上
WSL2とUbuntuのインストール
WSL(Windows Subsystem Linux)と、その上で動作するUbuntuをインストールします。これでWindows上でUbuntuを動作させることができます。
以下の記事通りでインストールできます。UbuntuはMicrosoft Storeを起動し、Ubuntu等のディストリビューションを検索した際に、18.04を選択することで18.04をインストールすることができます。
Ubuntu上
(再掲)Ubuntu上でのROSのセットアップなどは先ほど紹介したの記事の通りなので、説明などは省略しながら進めていきます。
ROSのインストール
ここから、インストールしたUbuntuのターミナルでの作業になります。
既にインストール済みの方は、catkinのビルドシステムはcatkin buildを使用するので注意してください。
インストールから行う場合は、以下のディレクトリのインストールスクリプトを使用させてもらいましょう。
curl -s https://raw.githubusercontent.com/karaage0703/ubuntu-setup/master/install-ros-melodic.sh | /bin/bash
また、ROSのGUIをWindows上で使用する際は以下の記事通りに設定する必要があります。
MoveItなど各種必要なソフトのインストール
MoveItとは、マニピュレーターの動作計画をしてくれるソフトウェアです。
以下のコマンドでインストールします。
$ sudo apt update
$ sudo apt install -y ros-melodic-moveit
$ sudo apt install -y ros-melodic-ros-control ros-melodic-ros-controllers
$ sudo apt install -y ros-melodic-gazebo-ros
$ sudo apt install -y ros-melodic-jsk-rviz-plugins
myCobot用のソフトウェアのインストール
myCobotのMoveIt用のソフトウェアをダウンロードしてビルドすると、すぐに使えるようになります。以下のリポジトリにありますが、これもこの記事を参考にダウンロードとビルドを行います。
$ cd ~/catkin_ws/src
$ git clone https://github.com/Tiryoh/mycobot_ros
$ git clone -b fix_gazebo https://github.com/karaage0703/mycobot_moveit
$ catkin build
Gazeboでの動作確認
正常にインストールできていれば、以下のコマンドでRvizとGazeboが立ち上がります。
$ roslaunch mycobot_moveit mycobot_moveit_gazebo.launch
右にRviz、左がGazeboですね。これでWindows上でGazeboとRvizが立ち上がることも確認できました。
Rvizの方で手先を適当な場所に動かし、Plan&Executeを実行するとGazebo上のmyCobotも動くことがわかります。
※Windows上でGazeboなどのソフトウェアが立ち上がらない場合は以下の記事の設定がうまくいっていない可能性が高いです。
Unityと通信用のソフトウェアのインストール
Gazeboでの動作確認ができたら、Unityと通信用のソフトウェアをインストールしましょう。
$ sudo apt install -y ros-melodic-rosbridge-server
UbuntuのIPアドレスの確認
あとでWSL上のUbuntuとWindowsで通信を行うので、UbuntuのIPアドレスを確認しておきます。eth0の部分に出ているIPアドレスを使用します。
今回は、172.21.168.185
となります。
細かい仕様は分かっていないですが、起動するたびに変わるようなので注意してください。
$ ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.21.168.185 netmask 255.255.240.0 broadcast 172.21.175.255
inet6 fe80::215:5dff:fea0:702c prefixlen 64 scopeid 0x20<link>
ether 00:15:5d:a0:70:2c txqueuelen 1000 (Ethernet)
RX packets 360754 bytes 24703826 (24.7 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 646362 bytes 29983555789 (29.9 GB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 10029818 bytes 755374944 (755.3 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 10029818 bytes 755374944 (755.3 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
次からは、Windows上での作業になります。
Windows上での作業
Unity Hubのダウンロード
まず、Unity Hubをインストールします。Unity Hubは、Unity本体ではなく、Unity自体を管理できるソフトウェアのようなものです。
以下のサイトの、「Unity Hubをダウンロード」ボタンからダウンロードして、Unity Hubのインストールを行います。
Unityのインストール
続いて、Unityをダウンロードします。ネットワーク次第で時間がかかるので気長に待ちましょう。
自分が動作確認したバージョンは2020.3.8f1かでした。
Unity Hubの「インストール」メニュー、右側の青いインストールボタンを押してインストールを行います。初回はライセンスの認証が必要なのでメールアドレスをいれて認証しましょう。個人での使用は無料です。
myCobotに必要なソフトウェアをダウンロード
これらはわかりやすいWindows上のフォルダに置いてください。
myCobotのUnity環境をダウンロードします。
$ git clone https://github.com/Ry0/mycobot_unity_ros_sharp.git
UnityとROSの通信に必要なソフトウェアをダウンロードします。
以下のリポジトリの、"RosSharp.unitypackage"をダウンロードしてください。
※これらのファイルをWSL上に置いても、アクセスはできるがUnityのバージョン違いに対応できず、Unityが立ち上がらなかったです。
Unityプロジェクトを立ち上げて、ROSとの通信をできるようにする
Unity Hubの、プロジェクトメニュー > 「リストに追加」からダウンロードした mycobot_unity_ros_sharp
のフォルダを選択します。
プロジェクト名をダブルクリックすると立ち上がります。(Unity Hubが落ちてUnityが立ち上がります)
ROS#のAssetをimport
UnityのProjectタブのAssetsから右クリックでImport Package > Custom Package... から、先ほどダウンロードしたRosSharp.unitypackageを追加します。
ROSとの通信の設定
ROSとwebsocket通信で通信するため、WSL上のUbuntuのipアドレスを入力します。
左側の Hierarchyメニューの中のROSConnectorをクリックすると、右側に色々メニューが出てきます。その中のROS Bridge Server Url
のIPアドレスをWSL上のUbuntuのIPアドレスにします。
また、Joint Namesの名前を変えます。
joint1
〜joint6
を arm1_joint
〜arm6_joint
のようにしてください。
ここまでの変更を保存したら準備は完了です。
動作確認
ROSの立ち上げ
以下のコマンドで立ち上げます。
Gazeboの時と同様に、myCobotのMoveItを立ち上げます。
$ roslaunch mycobot_moveit mycobot_moveit_gazebo.launch
Unity通信用に以下のコマンドを実行します。
$ roslaunch rosbridge_server rosbridge_websocket.launch
Unityの立ち上げ
先ほどと同様の手順でUnityを起動し、中央上部の再生ボタンを押します。
Rviz上でMoveItを動かすとUnity上のMyCobotも動くと思います。
以上です!!!!!
参考
素晴らしいソフトウェアを公開してくれている皆さん、ありがとうございます!!!
myCobotについて
myCobotをUnityで動かす
UnityのPlaymode中は変更の保存ができない