自動運転AIチャレンジ2023（インテグレーション）取り組みの工夫と失敗〜決勝（実車競技）編〜

## あらすじ

[前編はこちら](https://qiita.com/seigot/private/dbd43984335ed68f5bcd)

- [自動運転AIチャレンジ2023（インテグレーション大会）](https://www.jsae.or.jp/jaaic/2023_contest.php)
- 本記事は[チーム遊戯王](https://automotiveaichallenge.github.io/aichallenge2023-integ/teams/index.html#チーム遊戯王)の大会参加記（の決勝編）です。
- 次回大会以降の参加者の参考になりましたら幸いです。いいね頂けると喜びます。

※ 発言は個人の見解に基づくものであり、所属組織を代表するものではありません
※ Blogを書くまでが自動運転AIチャレンジ！

---
## 自己紹介
[チーム遊戯王](https://automotiveaichallenge.github.io/aichallenge2023-integ/teams/index.html#チーム遊戯王)です。
謎の有志団体である[challenge_club](https://challenge-club.connpass.com)の有志メンバーで構成されています。

> https://challenge-club.connpass.com
> 謎の有志団体であるchallenge_club（技術チャレンジ部）です。
> 新しいことにチャレンジしてみたい！
技術をさらに深めたい！
いろんな人と知り合いたい！
一人だと心折れちゃう！一緒に取り組む仲間が欲しい！

チーム遊戯王は予選は社会人上位だったものの、決勝では惜しくも入賞を逃しました。
これを真摯に受け止め、これまで取組んだ工夫、及び今後の課題点について振返ります。

---

## 決勝（実車競技）の取組み

[シミュレーション予選](https://qiita.com/seigot/private/dbd43984335ed68f5bcd)と比べた際の決勝大会のポイント
- 東京大学柏の葉キャンパス内、車両試験コースを走行
- AWSIM／実車の挙動の違いの影響、「霧の発生」課題に備える必要がある
- AWSIM／実車の挙動の差分をいかに小さくしつつ、実車競技の課題を解決できるか（事前準備できるか）が重要（のはず）

対策方針：
　１．霧対策処理の追加
　２．実車評価時のオペレーションに十分に備える

![スクリーンショット 2023-12-02 16.56.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/344880/a110f5b6-979a-4058-9329-c0b8b1a47792.png)

---
## １．霧対策処理の追加

車両に搭載されているLIDARデータを用いて以下のような霧対策を図りました。

- 霧検知モジュールを追加し、霧検知時に低速走行モードへ切替える
- 車載ECU上でのリアルタイム検知（数fps）を想定し、計算量が小さい方法を採用
（LIDARの点群のうち、照射したものの返ってきていないデータの割合が多かったら"霧状態"と判定）

---
しかしながら以下のように、実車評価時に「霧状態」誤検出が多く車両制御が期待通りにならないという状態になりました。

https://www.youtube.com/watch?v=QhGWSszd8fg

![スクリーンショット 2023-12-02 17.49.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/344880/f5a58659-4d43-a052-2fe8-092975f656af.png)



誤検出が続く状態での自動走行は大変危険であり、本番では霧検出処理をOFFにして走行する旨を判断しました（幸いにも練習時に発見できたので本番での減点を受入れた上でOFFにしました）

---
## ２．実車評価時のオペレーションに十分に備える

[デジタツインの活用](https://www.soumu.go.jp/hakusho-kids/use/economy/economy_11.html#:~:text=デジタルツインの仕組み,呼（よ）びます%E3%80%82) が求められる世の中ですが、シミュレータ／実車の挙動が完全に一致する前提で評価することは難しいと認識しています。ここで重要なことは、以下だと考えました。

- シミュレータ／実車の挙動は違う前提で実車評価時に臨み、明確化した違いを素早く解決する
- 当日の限られた実車評価時間（前日30min）で違いの明確化をやりきる


---
具体的には以下を準備しました。

- 自己位置の初期設定手順を自動化（準備時間を1min-->10sec、ささっと初期設定する）
- 各種plannerのパラメータを複数準備（障害物回避バッファ、速度パラメータをいくつか準備）

しかし、そもそも想定外の違い「自己位置推定が失敗し続ける」現象が起き現場で混乱、
事前準備した複数パラメータを試すも解決せず、走行不能状態から脱却できない状況。

![スクリーンショット 2023-12-02 18.43.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/344880/5c6715c5-3aaa-8ce7-c5cc-287c046a1bda.png)


独自設定が原因ではと考え、前日に疑わしいパラメータを元に戻すも「自己位置推定が失敗し続ける」現象は解決できず敗退。無念。前日タリーズカフェで5時間くらい粘ったのに、、どうして、、

---
## 走行動画

上記の混乱が生じている際の動画は以下です。
尚、パラメータはこちらです。自己位置推定が合わない原因がいまだ不明で夜寝付けないです。助けて下さい。

> 予選最終パラメータ（自信がある）
> https://github.com/seigot/aichallenge2023-integ/tree/simulation-parameter-preliminary
> 決勝最終パラメータ（自信がない）
> https://github.com/seigot/aichallenge2023-integ/tree/simulation-parameter-final

動画（TBD）

https://youtu.be/P9HwFVHKbQw


---
## まとめと今後の抱負

#### まとめ

- 予選では`planning`や自動評価などの工夫により想定通りの性能を出せた。
- 決勝では、そもそも想定外の事象が発生し、競技中に解決できず悔しい結果となった。
- 実車評価の経験不足が顕在化した結果であり、シミュレータだけでなく実物を触って評価する重要さを改めて感じた。

#### 今後の抱負
- 実物を触って評価する本大会のような機会はたいへん貴重。
- 技術コミュニティの発展には、失敗や反省を振り返り、これをオープン共有する文化こそ重要と考える。
- 今後とも自動運転AIチャレンジ大会、業界の発展に寄与できましたら幸いです。

## その他

上記以外にももし気になることがありましたらコメントよろしくお願いいたします。

---
# 参考文献

Behavior Path Planner
https://autowarefoundation.github.io/autoware-documentation/pr-401/design/autoware-architecture/planning/
https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_path_planner/
stop line design
https://autowarefoundation.github.io/autoware.universe/pr-1971/planning/behavior_velocity_planner/stop-line-design/
Narrow Space Driving
https://autowarefoundation.github.io/autoware-documentation/main/design/autoware-architecture/planning/
how to tune mpc parameters
https://autowarefoundation.github.io/autoware.universe/main/control/mpc_lateral_controller/model_predictive_control_algorithm/
https://autowarefoundation.github.io/autoware.universe/main/control/mpc_lateral_controller/
https://autowarefoundation.github.io/autoware.universe/main/control/mpc_lateral_controller/#how-to-tune-mpc-parameters
https://autowarefoundation.github.io/autoware.universe/main/control/trajectory_follower_node/obstacle_avoidance_planner
https://autowarefoundation.github.io/autoware.universe/main/planning/obstacle_avoidance_planner/
obstacle_stop_planner (回避経路生成)
https://tier4.github.io/obstacle_stop_planner_refine/pr-check/pr-30/site/obstacle_stop_planner_refine/
先人のQiita
https://qiita.com/yhisaki/items/b57172c9917399573b67
https://qiita.com/h_bog/items/368543a4b10b356db0e5
autoware_mini(github)
https://github.com/UT-ADL/autoware_mini
https://automotiveaichallenge.github.io/aichallenge2023-sim/customize/index.html
autoware(github)
https://github.com/autowarefoundation/autoware
物体の中心位置周り
https://autowarefoundation.github.io/autoware.universe/main/perception/lidar_centerpoint/
https://github.com/tianweiy/CenterPoint
https://qiita.com/chin_self_driving_car/items/362772f5078c0cbe4c0d
自動運転システム構築塾
http://4c281b16296b2ab02a4e0b2e3f75446d.cdnext.stream.ne.jp/randc/mirai/3_Autoware_LP.pdf
ROS2: 別のpythonファイルからインポートしてノードをつくる手順
https://zenn.dev/tasada038/articles/5d8ba66aa34b85
自動運転をテーマに研究を行なわれている立命館大学 環境情報研究室様のサイト
https://site.ubi.cs.ritsumei.ac.jp/2023年度研究室配属希望者向けページ/2023年度各ゼミ紹介/auto