AIchallenge-racingのすゝめ（進め）その１

# はじめに
<!-- 発端や概要を記載 -->
この記事が私のはじめての記事となります。よろしくお願いします。

２ヶ月前にROSを初めて知った、そんな私ですが、大学の先輩から
[JapanAutomotiveAIChallenge](https://www.jsae.or.jp/jaaic/2023ver/simulation/)
というものを教えてもらい、勉強目的もあり参加することにしました。
この記事では、私がこのチャレンジをどのように進めていったかを紹介しようと思います。
何回かに分けて紹介する予定なので、興味があれば続編をお楽しみに。
# 目次
<!-- タイトルとアンカー名を編集 -->
1. [とにかく実行してみよう](#1-とにかく実行してみよう！)
1. [パラメータを変えてみる](#2-パラメータを変えてみる)
1. [次回に向けて](#3-次回に向けて)
1. [参考文献](#参考文献)

<!-- 各チャプター -->
# 1. とにかく実行してみよう！
[公式セットアップ](https://automotiveaichallenge.github.io/aichallenge2023-racing/setup/index.html)を参考にして、Ubuntu22.04で環境を構築しました。私は、GPU利用想定の環境にしましたが、CPU onlyでもできるそうです。
まずは、ターミナルを２つ用意し、dockerに入ります。１つは、Autoware、もう一つはawsim用です。Autoware、awsimをそれぞれ実行してみましょう。
```shell
#dockerに入る　（２つのターミナルでそれぞれ実行）
cd aichallenge/docker/train
run container.sh

#1.Autowareを実行(１つ目のdocker内)
cd /aichallnge
bash run_autoware.sh

#2.awsimを実行(２つ目のdocker内)
cd /aichallnge
bash run_autoware.sh
```

![Screenshot from 2024-01-11 21-06-32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3673708/9947a1e5-70ab-035b-043d-aaddab90d594.png)

すると、Autowareの画面とAwsimの画面が表示されたと思います。自動で動き出したら、大成功です！
画面左上に、ROSと書いてあるbuttonがありますが、クリックするとKeyboardに変化し、矢印キーで手動操作することもできるそうです。

# 2. パラメータを変えてみる
無事実行できたかと思いますが、最初の状況では、はじめのカーブでコースアウトしてしまったと思います。なんとかしたいですね。そこで、少しパラメータを調整してみましょう。
新しいターミナルを開くかGUIでフォルダを開きます。
/aichallenge2023-racing/docker/aichallenge/aichallenge_ws/src/aichallenge_submit/
aichallenge_submit_launch/launch/autoware_micro_awsim.launch
を開いてみましょう。（わかりづらくてすみません）
230行目辺りに、lookahead_gainという項目があると思います。これを、低くしてみましょう。私は、0.2にしました。
```xml
<node pkg="simple_pure_pursuit" exec="simple_pure_pursuit" name="simple_pure_pursuit_node" output="screen">
    <param name="use_external_target_vel" value="false"/>
    <param name="external_target_vel" value="100.0"/>
    ##これでーーす 
    <param name="lookahead_gain" value="0.4"/>

    <param name="lookahead_min_distance" value="5.0"/>
    <param name="speed_proportional_gain" value="1.0"/>
    
    <remap from="input/kinematics" to="/localization/kinematic_state"/>
    <remap from="input/trajectory" to="/planning/scenario_planning/trajectory"/>
    <remap from="output/control_cmd" to="/control/command/control_cmd"/>
  </node>
```
ファイルの編集が完了したら、先程のdockerに戻ります。変更を加えたときは、Autowareのbuildからやり直します。
(clean_buildは１分ほどかかる)

```shell
#aichallengeに移動（別の場所にいたら）
cd /aichallenge
#変更点だけbuildしたい場合
bash build_autoware.sh
#builを１からやり直す場合
bash clean_build.sh
```
buildができたら、はじめの実行と同じように、autowareとawsimを起動しましょう。
どうやら、コーナリングの仕方が変わっていますね。実際に自分の手による変更が明らかになると面白いですね。

しかしながら、これでは問題を解決できていません。さらに低い数値や高い数値を試しましたが、おそらくこのパラメータだけでは、解決できないでしょう。そこで、スピードをいじってみましょう。先程の、autoware_micro_awsim.launchファイルに戻ります。use_external_target_velをtrueに、external_target_velを7.0にしました。この設定により、制限速度が6.0 m/s (21 km/h)になります。ちなみに、lookaheadgainは1.0にしました。では実行してみましょう。(buildを忘れずに)

```xml
<node pkg="simple_pure_pursuit" exec="simple_pure_pursuit" name="simple_pure_pursuit_node" output="screen">
    ##今回はこっちでーーす 
    <param name="use_external_target_vel" value="true"/>
    <param name="external_target_vel" value="5.0"/>
    <param name="lookahead_gain" value="1.0"/>

    <param name="lookahead_min_distance" value="5.0"/>
    <param name="speed_proportional_gain" value="1.0"/>
    
    <remap from="input/kinematics" to="/localization/kinematic_state"/>
    <remap from="input/trajectory" to="/planning/scenario_planning/trajectory"/>
    <remap from="output/control_cmd" to="/control/command/control_cmd"/>
  </node>
```
すこしは、ましになったでしょうか。これでもまだ、アウトしますね。さらに、直線でもスピードが落ちてしまいます。（困惑）

スピードを落としても曲がりきれないので、経路に問題がありそうですね。あの経路はどこから生成されているのでしょう。


次回に続く


# 3. 次回に向けて
今回の走行で、経路に問題があると予想できました。次回はその問題を解決する方法を紹介します！

>
# 参考文献
- [JapanAutomotiveAIChallenge](https://www.jsae.or.jp/jaaic/2023ver/simulation/)