TOPPERSプロジェクト箱庭WGでは,IoT/クラウドロボティクス時代の仮想シミュレーション環境である『箱庭』の研究開発を進めています.
本リポジトリでは,箱庭上で ROS 2 プログラムのシミュレーションを簡単にお試しできる環境を公開しています.
- Windows 環境: Windows 10/11
- Ubuntu 20.04 LTS on WSL2/WSLg
- Linux 環境: Ubuntu 20.04 LTS
- Mac 環境: macOS Catalina ver.10.15.7
Windows 環境では,操作は全てWSL2/Linuxのシェル上で行います.WSL2のファイルシステム配下(/home/${USER}/
以下)ではなくWindowsファイルシステム配下(/mnt/c/
以下)で実行してください.
現在の最新版は v1.1.4 です. 「バージョン情報・更新履歴」も参照してください(バージョン番号はGit/GitHubのtag/releaseおよびDocker Hubのtag番号に対応しています)
ターミナルで下記を実行して本リポジトリをcloneしてください.
git clone --recursive -b v1.1.4 https://github.com/toppers/hakoniwa-ros2sim.git
本シミュレータでは Docker を利用します.
実験的にネイティブのLinux環境(WSL2含む)での動作を試行しています.ネイティブ環境での動作手順は appendix/native.md をご参照ください.
Docker Desktop for Mac の利用を推奨します.
Docker Engineがインストールされている必要があります.WSL2またはLinuxのターミナルで下記のコマンドの結果が同じように出力されていれば,すでにインストール済みです($
から始まる行は実行するコマンドを示しています).
$ which docker
/usr/bin/docker
$ service --status-all |& grep docker
[ + ] docker # または " [ - ] docker "
$ service docker status
* Docker is running # または " * Docker is not running "
Docker Engineのインストールはやや手数が多いため,下記の公式マニュアルにある実行コマンドを"toppersjp/hakoniwa-single_robot リポジトリの docker/install-docker.bash
にまとめています.本スクリプトの実行時に問題がありましたら,公式マニュアルの手順に従ってインストールを進めてください.
Install Docker Engine on Ubuntu | Docker Documentation
スクリプトを用いたDockerのインストールには,下記のように実行してください.
wget https://raw.githubusercontent.com/toppers/hakoniwa-single_robot/main/docker/install-docker.bash
bash install-docker.bash
service docker status
の結果が " * Docker is not running " の場合は,Dockerを起動してください.
sudo service docker start
次のように出力されていれば,Dockerが起動しています.
* Starting Docker: docker [ OK ]
また,ユーザが docker
のグループに所属していることを想定しています.そうでない場合は,次のコマンドを実行してください.
sudo gpasswd -a $USER docker
sudo chgrp docker /var/run/docker.sock
sudo service docker restart
上記のコマンド実行結果は,ターミナルに再ログインしてから有効となります.
- Unity Hub 3.1.1 以降
- Unity Editor 2021.3.0f1
- Unity Hub の「Installs > Install Editor」画面に本バージョンが表示されない場合は,Unity Dowonload Archive の本バージョンの "Unity Hub" をクリックしてインストールできます.
シミュレータの実行環境は,ビルド済みのDocker imageをDocker Hubにて公開しています.
https://hub.docker.com/r/toppersjp/hakoniwa-ros2sim
次のコマンドを実行してください.Dockerイメージののpullと展開を行います.
bash docker/pull-image.bash
[補足:開発者向け情報] Dockerイメージの作成用に docker/create-image.bash
があります.
ターミナルを2個起動します(以降の説明では,ターミナルAおよびターミナルBと呼びます).
ターミナルAでdockerコンテナを起動します.
bash docker/run.bash
Mac環境の場合は,ネットワークポート名(例:"en0")を引数に指定する必要があります.
ポート名は ifconfig
コマンド等で確認できます.
bash docker/run.bash <port>
bash hako-install.bash opt all
Unity Hubを起動し,右上の「開く」をクリックして、先ほどクローンしたROS対応版箱庭ソース上の以下のディレクトリを指定します.
場所:ros2/unity/tb3
起動すると,以下の画面が表示されます.
この状態で、画面左下にある「プロジェクトビュー」の「Assets/Scenes」を選択すると、画面下に「Toppers_Course」というシーンがありますので,これをダブルクリックしましょう.
以下のようにコースが表示されます.
次の対象を例題として実行手順を説明します.
- ROS 側の制御プログラム:
src/tb3/src/tb3ctrl.cpp
- Unity側のロボット:
TB3RoboModel
ターミナルAとBの両方ででdockerコンテナに入ります.
ターミナルAで Dockerコンテナを終了させていた場合は,改めて起動してください,
bash docker/run.bash
ターミナルB側は,以下のコマンドで入ります.
bash docker/attach.bash
ターミナルAでROS-TCP-ENDPOINTを起動しましょう.
# bash launch.bash
ターミナルBでROS2プログラムを起動しましょう.
# bash run.bash tb3 TB3RoboModel
Unityのシミュレーション開始ボタンをクリックすると,以下の起動画面が出てきます.
この状態で,Unity側の「開始」ボタンをクリックすると箱庭のシミュレーション開始し,TurtleBot3が動き出します.
この動画の各ウィンドウは,それぞれ次の通り対応しています.
- 右上:ターミナルA
- 右下:ターミナルB
- 左:Unity
本リポジトリで公開している「箱庭 ROS シミュレータ」について,ご意見や改善の提案などをぜひ こちらのGitHub Discussions でお知らせください.改修提案の Pull Requests も歓迎いたします.
- SLAMやNav2の動作例を示す (#19)
- TurtleBot3 の Unity パッケージの設計と作成にあたっては,宝塚大学 東京メディア芸術学部 吉岡章夫准教授および学部生の杉崎涼志さん,木村明美さんにご協力いただきました.
- TurtleBot3 のUnity アセットは,株式会社ロボティズ様より提供いただいたデータを基に作成しています.ご協力いただき深く感謝いたします.
TOPPERSライセンスで公開しています.
著作権者はTOPPERSプロジェクト箱庭ワーキンググループです.詳細はLICENSE.mdをご参照ください.