概要
「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
うまく起動すると、こういう画面が表示されます。
この状態で、画面左下にある「プロジェクトビュー」の「Assets/Scenes」を選択すると、画面下に「Toppers_Course」というシーンがありますので、これをダブルクリックしましょう。
そうすると、以下のようにコースが表示されます。
これでインストール終了です!
シミュレーション実行する
準備
端末Aと端末Bでdockerコンテナに入りましょう.
端末B側は,以下のコマンドで入ります.
$ bash attach.bash
端末A
端末AでROS-TCP-ENDPOINTを起動しましょう.
# bash launch.bash
Unityのシミュレーション開始する
Unityのシミュレーション開始ボタンをクリックすると,いつもの起動画面が出てきます.
端末B
端末BでROS2プログラムを起動しましょう.
# bash run.bash tb3 TB3RoboModel
この状態で,Unity側の「開始」ボタンをクリックすると箱庭のシミュレーション開始し,TurtleBot3が動き出します.
今までの操作を実演すると,こんな感じです.
ちなみに,Unityシミュレーション実行時に,「Gizmos」をクリックすると,レーザスキャナの光線が見えます.
トラブルシューティング
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」として説明します.
「作成」ボタンをクリックすると,以下の状態になります.
Unity ROS パッケージのインストール
まずは,以下のUnityのパッケージマネージャを起動しましょう.
起動するとこんな画面が出てきます.
画面左上の「+」ボタンをクリックして,git URLからパッケージを追加します.
追加対象は以下の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」ボタンをクリックするとインストール始まります.
URDFインポータ
URL:https://github.com/Unity-Technologies/URDF-Importer.git?path=/com.unity.robotics.urdf-importer#v0.5.0
以下のように入力して,「Add」ボタンをクリックするとインストール始まります.
UnityのROSバージョンをROS2に設定
Unityのメニュー「Robotics」の「ROS Settings」を選択してください.
デフォルトでは,「ROS1」になっていますので,下図のようにROS2
にしましょう.
箱庭のUnityパッケージのダウンロード
TurtleBot3の場合
以下から,最新の箱庭Unityパッケージ(single-robot-TB3-hakoniwa-core-ros2.unitypackage
)をダウンロードしてください.
箱庭ロボット組み立てキットの場合
以下から,最新の箱庭Unityパッケージ(hakoniwa-mini.unitypackage
)をダウンロードしてください.
Unityに箱庭Unityパッケージのインポート
ダウンロードしたUnityパッケージを以下のメニューからインポートしてください.
以下のポップアップが出てきますので,「Import」をクリックしてください.
インポート成功すると,箱庭のシーンがあります.下図のように「Toppers_Course」をダブルクリックしてください.
成功すると,こうなります.
これで,Unity側のインストールは完了です.ここからdocker環境に戻ります.