search
LoginSignup
19
Help us understand the problem. What are the problem?

posted at

updated at

Organization

docker環境でUnity上のTurtleBot3をROS2で動かすまで

概要

ROS2でUnity上のTurtleBot3を動かそう!」では,WSL2/Ubuntu20.0.4環境上にROS2をインストールする手順を紹介しました.

ここでは,dockerコンテナ使った手順を説明します.
ROS2をインストールするのが面倒な方は便利かもです.

  • 2022.01.01
    • Mac環境での導入手順を追加
  • 2022.01.02
    • Linux環境での導入手順を追加
  • 2022.01.23
    • 箱庭ロボット組み立てキットの導入手順を追加
  • 2022.03.20
    • インストール手順を簡略化した

前提とする環境

Unity

  • Unity Hub
    • Unity Hub 3.1.1
  • Unity
    • Unity 2021.2.1f1

Windows環境

  • Windows10 Home, Windows 11
  • WSL2/WSLg/Ubuntu20.0.4
  • WSL2/Docker Engine

Mac環境

  • MacBook Air
    • macOS Catalina ver.10.15.7
    • メモリ:4GB
  • Docker for Mac

Linux環境

  • Ubuntu20.0.4
    • メモリ:4GB
  • docker

インストール手順

Windows環境

ルートプロジェクト構成

WSL2/Ubuntu20.0.4 を起動し,以下のプロジェクトを作成します(Cドライブ直下にプロジェクトを作成).

$ mkdir /mnt/c/project
$ cd /mnt/c/project

Mac/Linux環境

ルートプロジェクト構成

Terminal を起動し,以下のプロジェクトを作成します(ホーム直下にプロジェクトを作成).

$ cd ${HOME}
$ mkdir project
$ cd project

ROS対応版箱庭リポジトリのクローン

ルートプロジェクトへ移動した状態で,以下のコマンドを実行してください.

git clone --recursive https://github.com/toppers/hakoniwa-ros-samples.git

箱庭ロボット組み立てキットを利用される場合は,さらに以下のコマンドを実行してください.

$ cd hakoniwa-ros-samples
$ git checkout robo-parts

dockerイメージの作成

Windows環境

$ sudo service docker start
$ cd /mnt/c/project/hakoniwa-ros-samples/ros2/docker
$ bash create-image.bash

Mac環境

$ cd hakoniwa-ros-samples/ros2/docker
$ bash create-image.bash

Linux環境

$ cd hakoniwa-ros-samples/ros2/docker
$ bash create-image-linux.bash

dockerを起動する

まずは,端末を2個(端末A,端末B)起動して,以下のディレクトリへ移動してください.

$ cd project/hakoniwa-ros-samples/ros2/docker

端末A

端末Aでdockerコンテナを起動します.端末Bは後で使います.

Windows環境の場合

$ bash run.bash

Mac環境の場合

Mac環境の場合は,イーサーネット名を引数に指定してください.
イーサーネット名は,ifconfigコマンドで確認できます。

$ bash run-mac.bash <ether>

Linux環境の場合

$ bash run-linux.bash

起動した dockerコンテナ上で箱庭のROS環境をインストール

# bash hako-install.bash

Unity プロジェクトを開く

Unity Hubを起動し,右上の「開く」をクリックして、先ほどクローンしたROS対応版箱庭ソース上の以下のディレクトリを指定します.

  • 場所:hakoniwa-ros-samples/ros2/unity/tb3

image.png

うまく起動すると、こういう画面が表示されます。

image.png

この状態で、画面左下にある「プロジェクトビュー」の「Assets/Scenes」を選択すると、画面下に「Toppers_Course」というシーンがありますので、これをダブルクリックしましょう。

スクリーンショット 2022-03-20 21.41.45.png

そうすると、以下のようにコースが表示されます。

スクリーンショット 2022-03-20 21.43.31.png

これでインストール終了です!

シミュレーション実行する

準備

端末Aと端末Bでdockerコンテナに入りましょう.
端末B側は,以下のコマンドで入ります.

$ bash attach.bash

端末A

端末AでROS-TCP-ENDPOINTを起動しましょう.

# bash launch.bash

Unityのシミュレーション開始する

Unityのシミュレーション開始ボタンをクリックすると,いつもの起動画面が出てきます.

image.png

端末B

端末BでROS2プログラムを起動しましょう.

# bash run.bash tb3 TB3RoboModel

この状態で,Unity側の「開始」ボタンをクリックすると箱庭のシミュレーション開始し,TurtleBot3が動き出します.

今までの操作を実演すると,こんな感じです.

demo9999.gif

ちなみに,Unityシミュレーション実行時に,「Gizmos」をクリックすると,レーザスキャナの光線が見えます.

demo17.gif

トラブルシューティング

Mac上でUnityのシミュレーション開始ボタンを押すとgrpc_csharp_ext.bundleがないとエラーになる

原因:MacのファイアウォールがUnity内のgrpcの実行を監視しているため
対処:ファイアウォールの設定で許可する
参考:https://github.com/Cysharp/MagicOnion/issues/212

お知らせ:箱庭もくもく会

TOPPERS箱庭WGでは,もくもく会を不定期に開催しています.
本記事の内容を実際に試してみたい方や試してみたけど詰まっている方は,ぜひご参加ください.画面共有しながら参加者同士でサポートしたり,一緒に新しい機能を実装したりと”もくもく”しましょう.

参考情報

以下のセットアップ手順は、2022.03.20時点では不要となりましたが、個別にカスタマイズしたくなった場合に備えて、情報は残しておくというくらいの意図のものです。

Unityプロジェクトの作成

Unityを起動し,クローンしたROS対応版箱庭ソース上の以下に新規プロジェクトを作成します.

  • 作成場所:hakoniwa-ros-samples/ros2/unity
  • プロジェクト名:tb3_ros2

※補足:プロジェクト名は任意のもので大丈夫です.
※箱庭ロボット組み立てキットの場合は,「robo-parts」として説明します.

image.png

「作成」ボタンをクリックすると,以下の状態になります.

image.png

Unity ROS パッケージのインストール

まずは,以下のUnityのパッケージマネージャを起動しましょう.

image.png

起動するとこんな画面が出てきます.

image.png

画面左上の「+」ボタンをクリックして,git URLからパッケージを追加します.

image.png

追加対象は以下の2個です.それぞれ,URLを入力してインストールしてください.

ROS-TCP-CONNECTOR

URL:https://github.com/Unity-Technologies/ROS-TCP-Connector.git?path=/com.unity.robotics.ros-tcp-connector#v0.6.0

以下のように入力して,「Add」ボタンをクリックするとインストール始まります.
image.png

成功するとこうなります.
image.png

URDFインポータ

URL:https://github.com/Unity-Technologies/URDF-Importer.git?path=/com.unity.robotics.urdf-importer#v0.5.0

以下のように入力して,「Add」ボタンをクリックするとインストール始まります.

image.png

成功するとこうなります.
image.png

UnityのROSバージョンをROS2に設定

Unityのメニュー「Robotics」の「ROS Settings」を選択してください.

image.png

デフォルトでは,「ROS1」になっていますので,下図のようにROS2にしましょう.

image.png

箱庭のUnityパッケージのダウンロード

TurtleBot3の場合

以下から,最新の箱庭Unityパッケージ(single-robot-TB3-hakoniwa-core-ros2.unitypackage)をダウンロードしてください.

image.png

箱庭ロボット組み立てキットの場合

以下から,最新の箱庭Unityパッケージ(hakoniwa-mini.unitypackage)をダウンロードしてください.

image.png

Unityに箱庭Unityパッケージのインポート

ダウンロードしたUnityパッケージを以下のメニューからインポートしてください.

image.png

以下のポップアップが出てきますので,「Import」をクリックしてください.

image.png

インポート成功すると,箱庭のシーンがあります.下図のように「Toppers_Course」をダブルクリックしてください.

image.png

成功すると,こうなります.

image.png

これで,Unity側のインストールは完了です.ここからdocker環境に戻ります.

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
What you can do with signing up
19
Help us understand the problem. What are the problem?