🤖

UnityとROSで学ぶ移動ロボット入門をLinux/Windowsで動かす

2021/10/19に公開

UnityとROSで学ぶ移動ロボット入門

Unity社とアールティ社が共同で開発したUnityとROSを組み合わせたロボット入門者向け教材がGitHubに公開されていたので、動かしてみたいと思います。

https://github.com/unity3d-jp/Unity-ROS-MobileRObot-UI-Tutorial

チュートリアルはWindows向けだったので、最初Windowsでやろうとしたのですが、Windowsに慣れておらず疲れてしまいました。チュートリアルでLinuxでも動くと書いてあったので、試しにやってみたらあっさり動きました。

というわけで、メモ代わりにLinuxでのチュートリアルの動かし方を書いておきます。

追記:Windowsでも動いたのでWindowsの動かし方も追記します(ほぼチュートリアル通りです)。

Linux特有の設定

Linuxのセットアップ

Linuxのセットアップは、お好きなようにしてもらえれば良いのですが、私の場合は以下のような感じです。

https://zenn.dev/karaage0703/articles/0ca67e19aa772e

ある程度スペックがあったほうが楽だと思います。Jetson Nanoとかだと厳しいかもしれません。

Dockerセットアップ

最初にDockerをセットアップします。以下コマンドを実行して再起動すればOKです。

$ sudo apt install -y curl
$ curl -s https://raw.githubusercontent.com/karaage0703/ubuntu-setup/master/install-docker.sh | /bin/bash

LinuxでのDocker環境に関して、より詳しく知りたい方は以下記事参照ください。
https://qiita.com/karaage0703/items/e79a8ad2f57abc6872aa

Windows特有の設定

以下記事参照ください。注意点は、Gitの設定で環境変数設定するところと、チュートリアルと異なりWSL2をインストールして、DockerはDocker DesktopでなくWSL2上にDockerをセットアップしている点です。

https://zenn.dev/karaage0703/articles/211d89cc0a29a1

Windowsの場合、以降のコマンド操作はWSL2上で実行してください。

共通セットアップ

以降のセットアップ内容は、Windows/Linux共通です。

Unityセットアップ

省略します。以下参考記事です。

https://qiita.com/tommy1317/items/148fde8765f612af1f61

http://pineplanter.moo.jp/non-it-salaryman/2020/08/09/unity-ubuntu/

Unity-ROS-MobileRobot-UI-Tutorialセットアップ

ターミナルで以下コマンドを実行することで、チュートリアルのダウンロードから、Dockerのビルドまで実施します。

$ git clone https://github.com/unity3d-jp/Unity-ROS-MobileRobot-UI-Tutorial
$ cd Unity-ROS-MobileRobot-UI-Tutorial
$ git submodule update --init --recursive
$ cd ros
$ docker build -t raspimouse-unity:latest .

ちなみに最後のDockerのセットアップで使われるイメージは、以下で紹介しているtiryohさん作成のイメージのようです(実行するとStep 1/12 : FROM tiryoh/ros-desktop-vnc:melodicと表示されるのでわかります)。

https://qiita.com/karaage0703/items/957bdc7b4dabfc6639da

これで事前セットアップは完了です。ここまでは、一回やれば問題がない限りは、あとはもうやる必要はありません。

Unity-ROS-MobileRobot-UI-Tutorialを動かす

本来は、チュートリアルに沿って一つ一つ自分で実践していくのですが、今回は手っ取り早く完成形を動かすところをやってしまいましょう。個人の好みにもよりますが、私は最初に動作確認をした上で、実践していきたいタイプです。

特にこのサンプル結構テンションがあがるので、良いかなと思います。

Unity側の設定

最初にUnity側の設定です。といってもサンプル開くだけです。

Unityを起動して、リストに追加からUnity-ROS-MobileRobot-UI-Tutorial/MobileRobotUITutorialProjectを選択します。

以下のように表示プロジェクトに追加されたらOKです。

Unityバージョンは推奨のものをインストールするのがベストだと思います(私は多少違うバージョンを入れました)。いきなりScenesStep7のファイルを開きましょう。以下のように表示されたらOKです。

ROS側の設定

ROSの設定、詳しくはチュートリアルのStep3を参照ください。ここでは、最低限の手順を示します。

Ubuntuのターミナルで以下実行してDockerコンテナを起動します。

$ docker run --rm -it -p 10000:10000 -p 5005:5005 -p 6080:80 --shm-size=512m raspimouse-unity:latest

Webブラウザで http://127.0.0.1:6080 にアクセスします。以下のように表示されたらOKです。

続いて、ブラウザ上でターミナルを2つ起動して、以下のコマンドを実行します。ターミナルの立ち上げ方、ブラウザのターミナルへのコピペの仕方などは、チュートリアルを参照してください。

$ roslaunch raspimouse_gazebo raspimouse_with_cheeze_maze.launch camera:=true
$ roslaunch ros_tcp_endpoint endpoint.launch

実行すると、以下のようにGazeboというROSのシミュレータが起動します。

サンプル実行

Unityで先程開いたStep7のプロジェクトを実行しましょう。以下のようにUnity上でロボットを操作できます。連動してROS上のGazeboのロボットも動くことが確認できたらOKです。

https://twitter.com/karaage0703/status/1450372346296946688

まとめ

UnityとROSで学ぶ移動ロボット入門をLinuxでとにかく動かしてみるところまでやってみました。一通り動作確認できたら、1からチュートリアルを実践するのみですね。

内容、とても丁寧で充実していると思います。素晴らしいチュートリアルを無料で公開してくださっている、Unityさんとアールティさんに感謝ですね!

関連記事

https://zenn.dev/karaage0703/articles/4a1c9b1c5185d4

https://zenn.dev/karaage0703/articles/2d54b5c02dfe39

変更履歴

  • 2021/10/21 Windowsでのセットアップ方法を追記

Discussion