道路を作成してTurtlebot3を動かす

#概要
TOPPERS/箱庭を使うと，道路を自由に作成して，作成した道路上でTurtlebot3を動かすことができます．

なお，現時点では，ROS2のみ対応しています．

#インストール手順

インストール手順は以下の通りです．
基本的には，ROS対応版箱庭と道路作成ツールのインストール手順と同じですので，変更差分のみ補足しています．

1. [ROSプログラムをビルドする](https://qiita.com/kanetugu2018/items/26170fab17c74635ea91#ros%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E3%82%92%E3%83%93%E3%83%AB%E3%83%89%E3%81%99%E3%82%8B)
* [Unityをインストールする](https://qiita.com/kanetugu2018/items/26170fab17c74635ea91#unity%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B)
* [UnityのROSパッケージをインストールする](https://qiita.com/kanetugu2018/items/26170fab17c74635ea91#unity%E3%81%AEros%E3%83%91%E3%83%83%E3%82%B1%E3%83%BC%E3%82%B8%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B)
* 箱庭のUnityパッケージをダウンロードする
* [Unityに箱庭Unityパッケージをインポートする](https://qiita.com/kanetugu2018/items/26170fab17c74635ea91#unity%E3%81%AB%E7%AE%B1%E5%BA%ADunity%E3%83%91%E3%83%83%E3%82%B1%E3%83%BC%E3%82%B8%E3%82%92%E3%82%A4%E3%83%B3%E3%83%9D%E3%83%BC%E3%83%88%E3%81%99%E3%82%8B)
  * Scenesフォルダ直下には，以下の２つのシーンが存在しています．
     * RoadCreator
     * Toppers_Course
* [箱庭をインストールする](https://qiita.com/kanetugu2018/items/26170fab17c74635ea91#%E7%AE%B1%E5%BA%AD%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B)
  * なお，最後のインストールは以下のtb3だけでOKです．
  * `bash utils/install.bash ros2 ros2/unity/tb3_ros2 settings/tb3`
* [道路パーツのインストール](https://qiita.com/kanetugu2018/items/40a5c4a19a0ac10cf609#%E9%81%93%E8%B7%AF%E3%83%91%E3%83%BC%E3%83%84%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB)
* [道路パーツの微調整](https://qiita.com/kanetugu2018/items/40a5c4a19a0ac10cf609#%E9%81%93%E8%B7%AF%E3%83%91%E3%83%BC%E3%83%84%E3%81%AE%E5%BE%AE%E8%AA%BF%E6%95%B4)

## 箱庭のUnityパッケージをダウンロードする
以下で，ROS向け箱庭のUnityパッケージを公開していますので，バージョンに応じてダウンロードしてください．

https://github.com/toppers/hakoniwa-Unity-Package/releases/tag/tb3road-v1.0.0

* ROS1の場合
  * 未対応
* ROS2の場合
  * hakoniwa-road-tb3-ros2.unitypackage
  * road_parts_type.json
     * road_parts_type.json は，本パッケージをインポートしたUnityプロジェクト直下に配置してください．

#使い方

##道路作成する
道路作成するには，以下の`RoadCreator`シーンをダブルクリックします．
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/244147/213cd16d-9171-09f3-6f0b-de6f5646419e.png)

成功すると，以下のようになります．

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/244147/77ab7289-b5a5-9410-53ca-fae88a225524.png)

この状態でシミュレーション実行ボタンを押下して，道路を作成します．

![demo5.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/244147/5fde151c-2be5-4cce-c1e0-bcd589ef81d1.gif)

道路作成手順は，以下を参考にしてください．

https://qiita.com/kanetugu2018/items/e2ed0c4d055d0b91ea22#%E9%81%93%E8%B7%AF%E4%BD%9C%E6%88%90%E6%96%B9%E6%B3%95

作成終了したら，`s`ボタンを押下して保存し，シミュレーションを終了してください．
なお，保存ファイルは，`road_map.json`です．今回の場合は，以下の内容です．
コンフィグファイルの書式が気になる方は，[こちら](https://qiita.com/kanetugu2018/items/40a5c4a19a0ac10cf609#%E5%90%84%E7%A8%AE%E3%82%B3%E3%83%B3%E3%83%95%E3%82%A3%E3%82%B0%E6%83%85%E5%A0%B1%E3%81%AE%E8%AA%AC%E6%98%8E)を参照ください．

```json-doc
{
  "entries": [
    {
      "name": "road1_0",
      "prefab_name": "road1",
      "repeat_num": 0,
      "rotation": 0.0,
      "scale": 1.0,
      "connect_direction": null
    },
    {
      "name": "road2_1",
      "prefab_name": "road2",
      "repeat_num": 0,
      "rotation": 180.0,
      "scale": 1.0,
      "connect_direction": "+z"
    },
    {
      "name": "road2_2",
      "prefab_name": "road2",
      "repeat_num": 0,
      "rotation": 270.0,
      "scale": 1.0,
      "connect_direction": "+x/road2_1"
    },
    {
      "name": "road1_3",
      "prefab_name": "road1",
      "repeat_num": 0,
      "rotation": 0.0,
      "scale": 1.0,
      "connect_direction": "-z/road2_2"
    },
    {
      "name": "road2_4",
      "prefab_name": "road2",
      "repeat_num": 0,
      "rotation": 0.0,
      "scale": 1.0,
      "connect_direction": "-z/road1_3"
    },
    {
      "name": "road2_5",
      "prefab_name": "road2",
      "repeat_num": 0,
      "rotation": 90.0,
      "scale": 1.0,
      "connect_direction": "-x/road2_4"
    }
  ]
}
```

##箱庭環境へ作成した道路を読み込む
作成した道路をTB3環境上で読み込むには，以下の`Toppers_Course`シーンをダブルクリックします．

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/244147/26cf022d-8ea8-5d7e-121a-02cdde7d7e1e.png)

成功すると，こうなります．

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/244147/0f14cc7a-9581-b12b-2ff7-01055c5502f2.png)

次に，以下のように，道路読み込み用の機能を起動しましょう．

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/244147/b09775a7-584b-c352-e824-9f2f15d86169.png)

起動成功すると，以下がポップアップされます．

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/244147/308987b5-61f1-3ef1-46a1-6e0ffee6bada.png)

この状態で，`Parent`に`Roads`を設定してください．

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/244147/7e308934-6229-993b-6ba2-ac480fd9c98c.png)


あとは，`CREATE`ボタンを押下すれば，以下のように道路が読み込まれます．

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/244147/f302d32c-4873-0c9d-556b-60afcffb3683.png)

# お知らせ：箱庭もくもく会

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

https://hakoniwa.connpass.com/