UnityとROSで学ぶ移動ロボット入門をLinux/Windowsで動かす
UnityとROSで学ぶ移動ロボット入門
Unity社とアールティ社が共同で開発したUnityとROSを組み合わせたロボット入門者向け教材がGitHubに公開されていたので、動かしてみたいと思います。
チュートリアルはWindows向けだったので、最初Windowsでやろうとしたのですが、Windowsに慣れておらず疲れてしまいました。チュートリアルでLinuxでも動くと書いてあったので、試しにやってみたらあっさり動きました。
というわけで、メモ代わりにLinuxでのチュートリアルの動かし方を書いておきます。
追記:Windowsでも動いたのでWindowsの動かし方も追記します(ほぼチュートリアル通りです)。
Linux特有の設定
Linuxのセットアップ
Linuxのセットアップは、お好きなようにしてもらえれば良いのですが、私の場合は以下のような感じです。
ある程度スペックがあったほうが楽だと思います。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環境に関して、より詳しく知りたい方は以下記事参照ください。
Windows特有の設定
以下記事参照ください。注意点は、Gitの設定で環境変数設定するところと、チュートリアルと異なりWSL2をインストールして、DockerはDocker DesktopでなくWSL2上にDockerをセットアップしている点です。
Windowsの場合、以降のコマンド操作はWSL2上で実行してください。
共通セットアップ
以降のセットアップ内容は、Windows/Linux共通です。
Unityセットアップ
省略します。以下参考記事です。
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
と表示されるのでわかります)。
これで事前セットアップは完了です。ここまでは、一回やれば問題がない限りは、あとはもうやる必要はありません。
Unity-ROS-MobileRobot-UI-Tutorialを動かす
本来は、チュートリアルに沿って一つ一つ自分で実践していくのですが、今回は手っ取り早く完成形を動かすところをやってしまいましょう。個人の好みにもよりますが、私は最初に動作確認をした上で、実践していきたいタイプです。
特にこのサンプル結構テンションがあがるので、良いかなと思います。
Unity側の設定
最初にUnity側の設定です。といってもサンプル開くだけです。
Unityを起動して、リストに追加からUnity-ROS-MobileRobot-UI-Tutorial/MobileRobotUITutorialProject
を選択します。
以下のように表示プロジェクトに追加されたらOKです。
Unityバージョンは推奨のものをインストールするのがベストだと思います(私は多少違うバージョンを入れました)。いきなりScenes
のStep7
のファイルを開きましょう。以下のように表示されたら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です。
まとめ
UnityとROSで学ぶ移動ロボット入門をLinuxでとにかく動かしてみるところまでやってみました。一通り動作確認できたら、1からチュートリアルを実践するのみですね。
内容、とても丁寧で充実していると思います。素晴らしいチュートリアルを無料で公開してくださっている、Unityさんとアールティさんに感謝ですね!
関連記事
変更履歴
- 2021/10/21 Windowsでのセットアップ方法を追記
Discussion