AWSIMで柏の葉を走ってみる

## 完成図
さて、今回はいつもの西新宿のMapではなく柏の葉のMapでAWSIMをつかい走ってみようと思います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639823/dee22948-900e-a257-c760-012236ffbe6e.png)


## 環境

|OS             |Ubuntu 22.04|
|:--------------|----------|
|GPU            |RTX3090|
|Autoware       |awsim-stable(3月のリリース版)|
|AWSIM          |AWSIM_v1.1.0|

以前GTX1080Tiをつかってましたが、快適に作業するためGPUをRTX3090にupdateしました。

https://qiita.com/ttanaka3/items/6ae5f8331d60b0454308

快適に作業と言ってもunity editor　開きながらbiranry実行とautoware実行ができる環境を求めた結果なので少しリッチすぎるかもしれません。RTX3080Ti(１６GB)くらいがちょうどよかったかもしれません。

## 準備

今回つかうのは柏の葉のAWSIMです。こちらにbranchがあるようです。

https://github.com/tier4/AWSIM/tree/feature/kashiwanoha-map/Assets/AWSIM/Models/Environment

ちなみにこの記事は土日の暇な時に２〜３時間程度使って気分次第で中身を書いているので、この記事がボツになる可能性は全然あります。Unityはもともと触っていたこともあり、私はいろいろ書いてますがまだAWSIM歴１〜２ヶ月程度のため、わからないことは結構あります。
この記事のやり方が全てではないので公式のdocumentationと適宜見比べながら進めていただけたらと思います。

さて、柏の葉の環境を作るまえに一旦西新宿の設定からおさらいしましょう。
必要なものはざっくりと以下で構成されています。要望があればわかる範囲で少し詳細を追記していきます。
- clock(時間をpublishするやつ)
- enviroment (MGRS座標を入れておくスクリプト)
- 車両モデル一式（センサモデルなど）
- UI（なくても動くが一応）
- その他（入れ替え可能な部分）

さて、まずは branchをcloneしましょう。開くと柏の葉の地図が多分あるはず。あった。
AWSIMー＞Modelー＞Environmentsー＞kashiwanohaにありました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639823/f017b4a3-37f4-92d8-ed7f-fc8ae234b2b6.png)

あっ車両モデルやいろいろなものががない。。。西新宿を参考に見ていきます。

そのままいろいろとコピってきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639823/bf6375ac-2dbe-8208-576b-1d7e1501d8a5.png)

いろいろと詰みました。lidarがエラーはいてるっぽい。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639823/49010e3a-eaea-ae8f-641c-1db47bda9b64.png)

RGLのexceptionがあってUnknowPlatformで。。
C＃のスクリプトを見ましたが、修正方法がわからず30分が溶けました。笑
その後もいろいろやってみましたが、結論から書くと断念しました。。


別の方法を取ろうと思います。(多分正しいやり方ではないので、正しいやり方を知っている人は是非記事にしていただけると。)

環境（場所）を変えるにはあくまでも環境のモデルを入れ替えればいいだけなので、西新宿のAWSIMに柏の葉の環境をいれることにします。とりあえずAWSIM(main)をもう一個柏の葉用にcloneしてそこに柏の葉の環境をコピペする作戦でいきます。下記のbranchの柏の葉のEnvironmentの中のkashiwanohaをまるごとコピペしてnishishinjukuのSceneにいれましょう。

https://github.com/tier4/AWSIM/tree/feature/kashiwanoha-map/Assets/AWSIM/Models/Environment

とりあえず動くことを確認してから車両と地図を配置しましょう。
こんな感じで出てくると思います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639823/09b077f7-237b-e74e-026b-802c8502c68c.png)

:book:
1. 実行するとRGLに関するエラーがでてくるのでモデルのtext meshのread/writeをenableにしましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639823/4d723554-493c-8d64-16ab-88d4dd8dcfd8.png)
1. Signsだけはどうにも治らなかったのでコメントアウトしています。（直し方知っている人教えて！！）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639823/7e1f948e-bc8a-57b3-f92d-2b4f38cb672a.png)


あとはここにお好みでdirectional lightを加えていきましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639823/3ac3ded1-df58-bde8-32d2-b3d50d16c0d2.png)

何故かいつの間にか白一色になってました。（なんでか知っている人教えて！）

実行すると車両が床を突き抜けるのでgroundにmesh collidarをつけておきましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639823/59eaf1f7-52fe-8d59-40f4-d6b3cc3d7a00.png)


とりあえず実行してエラーがないことだけ確認できました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639823/d4f6aed2-575f-819c-9766-33597d485703.png)


## buildする

buildしていきましょう。この記事の内容のようにSceneを追加して、buildします。

https://qiita.com/ttanaka3/items/01ffe06f95f4d7a03e8a

こんな感じで起動しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639823/c46fad98-1a0d-5f1f-006b-b982c4c31e4e.png)

topic listがでていれば接続はOKです

```
/clock
/control/command/control_cmd
/control/command/emergency_cmd
/control/command/gear_cmd
/control/command/hazard_lights_cmd
/control/command/turn_indicators_cmd
/parameter_events
/rosout
/sensing/camera/traffic_light/camera_info
/sensing/camera/traffic_light/image_raw
/sensing/gnss/pose
/sensing/gnss/pose_with_covariance
/sensing/imu/tamagawa/imu_raw
/sensing/lidar/top/pointcloud_raw
/sensing/lidar/top/pointcloud_raw_ex
/vehicle/status/control_mode
/vehicle/status/gear_status
/vehicle/status/hazard_lights_status
/vehicle/status/steering_status
/vehicle/status/turn_indicators_status
/vehicle/status/velocity_status
```

:book: 詰まったら以下チェックしてみると良いと思います。
- source忘れてないか
- build settingでscene追加し忘れてないか
- editor実行の段階でエラーがでてなかったか



## autowareとの連携
ll2とpcdは入っているみたいなのでこちらを使ってautowareを起動しましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639823/6946275a-fc0c-ccbe-d1eb-7a7136b8a563.png)

```
ros2 launch autoware_launch e2e_simulator.launch.xml vehicle_model:=sample_vehicle sensor_model:=awsim_sensor_kit map_path:=$USER/kashiwanoha_awsim/Assets/AWSIM/Models/Environments/Kashiwanoha
```

autowareをlaunch
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639823/159ce212-444c-cbd4-05db-3c623770cc5a.png)

自己位置とゴールを入れるとこんな感じですね。おおー！！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639823/c4e381d1-5078-e2ab-4758-033fb6baab31.png)

AUTOボタンを押して無事ゴールまで走行できました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639823/8e720505-12a8-b17e-7844-ce7d56c9c18b.png)

（内心この記事がボツにならなかったよかったとホットしています）

## リメイク

いろいろと編集してみようともいます。
どうせなので冬仕様にしていきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639823/d5c640d8-60d3-477f-3d49-95ad6dab2d34.png)

雪を加えていきます。こちらの記事を参考に頑張ってみましょう。

https://qiita.com/ttanaka3/items/4c71b645163c0b8593fb

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639823/6f71f176-4e08-2628-8e7a-2eed4d4905a0.png)

冬に緑だと違和感あるので白の葉にしていきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639823/6ddfca69-85fb-afb8-5f70-d66bd56e6700.png)

snow_white的な感じでmaterialに名前をつけていきましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639823/47df9f0e-a855-fc0c-d6c1-8329f1a90c66.png)

mesh renderのmaterialを展開して、要素２に入れ込むと雪が積もっている感じがしてきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639823/c1958c3b-0436-0c5d-35c8-2da1da275cce.png)

雪だるまも追加していきましょう

https://assetstore.unity.com/packages/3d/props/free-snowman-105123


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639823/53241b5b-4484-c834-d030-793551fd5127.png)

他にもお好みでエフェクトを追加しましょう。

https://qiita.com/ttanaka3/items/4c71b645163c0b8593fb


## おわりに

今回は柏の葉でAWSIMと連携して走ってみました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639823/993ed5f8-36c6-9e00-20aa-6fabf86c17d8.png)

公式チュートリアルに「新しい環境でAWSIMを使うにはどうすればいいのか」などの解説が加わると嬉しいですね。私も正しいやり方を知りたいのです。

もし詳しい方や、やってみている途中で正しい方法を見つけた方がいたら公式readmeにチュートリアルのPR出してもらえると嬉しいです。PCDとLL2さえあればいろんなところを走れそうな気がしてきました。