LoginSignup
25
19

More than 1 year has passed since last update.

【ROS/Unity/WSL】Windows上でmyCobotをROSとUnity上で動かす

Last updated at Posted at 2021-05-23

はじめに

みなさんは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も動くことがわかります。

image.png

※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の「インストール」メニュー、右側の青いインストールボタンを押してインストールを行います。初回はライセンスの認証が必要なのでメールアドレスをいれて認証しましょう。個人での使用は無料です。

image.png

myCobotに必要なソフトウェアをダウンロード

これらはわかりやすいWindows上のフォルダに置いてください。
myCobotのUnity環境をダウンロードします。

$ git clone https://github.com/Ry0/mycobot_unity_ros_sharp.git

UnityとROSの通信に必要なソフトウェアをダウンロードします。
以下のリポジトリの、"RosSharp.unitypackage"をダウンロードしてください。

自分が使用したものはROS# Version 1.7です。
image.png

※これらのファイルをWSL上に置いても、アクセスはできるがUnityのバージョン違いに対応できず、Unityが立ち上がらなかったです。

Unityプロジェクトを立ち上げて、ROSとの通信をできるようにする

Unity Hubの、プロジェクトメニュー > 「リストに追加」からダウンロードした mycobot_unity_ros_sharpのフォルダを選択します。

image.png

プロジェクト名をダブルクリックすると立ち上がります。(Unity Hubが落ちてUnityが立ち上がります)

ROS#のAssetをimport

UnityのProjectタブのAssetsから右クリックでImport Package > Custom Package... から、先ほどダウンロードしたRosSharp.unitypackageを追加します。

image.png

ROSとの通信の設定

ROSとwebsocket通信で通信するため、WSL上のUbuntuのipアドレスを入力します。
左側の Hierarchyメニューの中のROSConnectorをクリックすると、右側に色々メニューが出てきます。その中のROS Bridge Server UrlのIPアドレスをWSL上のUbuntuのIPアドレスにします。

image.png

また、Joint Namesの名前を変えます。
joint1joint6arm1_jointarm6_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中は変更の保存ができない

25
19
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
25
19