AWSIMでジャンプしてみる

## 概要
今回の記事ではAWSIMを使ってAutowareでジャンプ台を使って飛んでみる方法について書いていこうと思います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639823/b8f8641a-4fd2-453a-07e6-f65b39faa851.png)


## 環境

awsim-stableのbrachが3/14に新しくなりました。今回はこのversionをもとに記事を書いていきます。

https://github.com/autowarefoundation/autoware/tree/awsim-stable

パッケージのディレクトリ構成が大きく変わっているので前の記事を参考に新しくrepositoryを作り直したほうがいいです。

https://qiita.com/ttanaka3/items/6ae5f8331d60b0454308#quick-start-demo

buildトラブル解決に自信がある勇者は以下のコマンドでupdateしましょう。パッケージのディレクトリ構成が変わっているのでsrc,install,buildフォルダは事前に削除したほうがいいです。
```
cd autoware # のrepository
git pull awsim-stable

vcs import src < autoware.repos # お好みで --force オプションも
または
vcs pull src # 変更加えていたりするとここでエラーがでるので気をつけましょう

colcon build　いつものコマンド
```

さて、新しくなったawsim-stableではautomatic goalというrviz pluginが加わりました。robotecの方がPRを出してくれたようですね。
使い方などはreadmeに書いてあるのでぜひ使ってみてください。

https://github.com/autowarefoundation/autoware.universe/tree/main/common/tier4_automatic_goal_rviz_plugin

readmeを見ながらAppend goal ボタンをクリックしてゴールの候補を追加し、send goal automaticallyで発車していきましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639823/f019c4a8-49b8-cf1b-9c4d-27dd39ceba9e.png)



## 検証

今回はとりあえずジャンプするまえに細かい検証をしていくためassetストアにあった丸太を使っていきます。（create 3D objectから適当に作ってみてもOKです）

https://assetstore.unity.com/packages/3d/props/exterior/low-poly-barriers-pack-free-201810

アセットストアとパッケージの使い方はこちらで紹介しているので見てみてみください。

https://qiita.com/ttanaka3/items/f3f468ec3bad53e71a12

適当にならべてみましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639823/73dbf0f3-6782-ebec-4d33-b9c7cd826644.png)

小さいのから大きいのまでならべてみしたが、大きいものは途中で停止してしまいハードルを下げました。

とりあえずキー操作で超えられるのかみてみましょう。
vehicle keybord inputをオンにしましょう。（buildするときはAWの入力とバッティングしてしまうのでオフにするのをわすれないように）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639823/ba02c4bd-cf0b-b482-c0e1-819140657fb7.png)


step実行で見てみましょう。干渉判定がしっかり働いているのでタイヤが木に乗り上げてますね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639823/3838a2ad-8a8e-3229-a673-885adbe8c821.png)


autowareで制御するときはobstacle stop plannerで木材が障害物判定されてしまうのでobstacle cruise plannerを使うようにします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639823/fa85e69e-d3f6-61ba-5709-1a19fa0b9a8e.png)

https://github.com/autowarefoundation/autoware_launch/blob/7edf20f08b823b3223387a42ee9722fbc3105c96/autoware_launch/launch/components/tier4_planning_component.launch.xml#L7

```
  <!-- motion -->
  <arg name="cruise_planner_type" default="obstacle_cruise_planner" description="options: obstacle_stop_planner, obstacle_cruise_planner, none"/>
  <arg name="use_surround_obstacle_check" default="true"/>
  <arg name="smoother_type" default="JerkFiltered" description="options: JerkFiltered, L2, Analytical, Linf(Unstable)"/>
```
ゴールまで走行できましたかね。


## 解析する

https://github.com/facontidavide/PlotJuggler

せっかくなので挙動も見てみましょう。plot jugglerというツールを使用していきます。チュートリアルも充実しているので使い方はこちらを参照するのがよさそうです。

https://github.com/facontidavide/PlotJuggler#tutorials

以下のコマンドで起動しましょう。
```
ros2 run plotjuggler plotjuggler
```

startというボタンを押してから以下のものを選択していきましょう。
```
/localization/kinematic_state
/localization/acceleration
/control/command/control_cmd
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639823/bd7a598f-e50d-1f17-2e29-90e7ce6d669c.png)

poseのzの値がところどころスパイク状になっていますが、丸太で上下に揺れた影響でした。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639823/94ccad4b-d24c-c062-af88-6e405ab810ed.png)


## autowareでjumpしてみる

create obejectからQuadを選択して、ジャンプ台を作成していきましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639823/9ce6f77d-fd64-9e80-27de-7490a9527370.png)


とりあえずキーボードinputでテスト。Dでギアを入れて上矢印で前進できます。

飛んだー！　
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639823/9fc406b7-eb13-c057-109c-b45436762caa.png)

unityの※物理エンジンのPhysicsはたしかNvidiaが作成していたと思いますが、なかなかいい挙動しています。
※bulletやODEなど挙動の計算を行うもの

落下地点をミスると突き刺さりますね。lidarのセンサ値も変動が大きいのでピッチ角変動に対する耐久性は将来的には課題になりそうですね。
実際にやるとすごく危ないので実機での検証はおすすめはできないです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639823/0d0f53c8-1279-2cbb-d070-a53042eb33bc.png)

さて、先程はキー操作でのジャンプでしたが、今度はautowareを使ってジャンプしていきます。

見やすいようにmain cameraについているfollow cameraのスクリプトを外して移動させます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639823/7eeaaeec-70b4-685f-f1ba-2fbf18dab7e1.png)

一応目安として適当な大きさのにキューブを置くと良いと思います。今回は高さ２ｍの台で幅３ｍジャンプ台？としました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639823/c27c6d54-0435-2344-ef96-01c3654314fc.png)

build 方法はこちらで紹介しているので見ていない方は要チェック

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


autoware側はジャンプ台が障害物判定されてしまい、障害物停止してしまうので、もう少し攻めていきます。障害物停止をnoneにしてとりあえず走行してみます。
```
  <!-- motion -->
  <arg name="cruise_planner_type" default="none" description="options: obstacle_stop_planner, obstacle_cruise_planner, none"/>
  <arg name="use_surround_obstacle_check" default="true"/>
  <arg name="smoother_type" default="JerkFiltered" description="options: JerkFiltered, L2, Analytical, Linf(Unstable)"/>
```

npcはジャンプしていますが、今回はこの状態のまま途中でとまってしまいました。摩擦や干渉判定が関係しているのかもしれません。（わかったら教えてください）

![Screenshot from 2023-03-18 19-13-23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639823/219b44b7-5d8f-7e82-69dd-93eae4e25a30.png)

z方向の速度は特に計算されていなさそうですね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639823/0606dfc1-7256-e1af-3a13-36583059a968.png)

高さ1mの台にして斜度を低くし再チャレンジしてみました。頼む！
![output.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639823/679303ad-425e-3e5e-b43a-b234accc26b0.gif)
１ｍなら飛べましたね。

斜度が同じであればどこまでものばしても飛べそうでした。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639823/bb837dca-0762-5781-8526-76a4b44889db.png)

いろいろと試してみましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639823/a97da9d6-58de-405e-a9e7-109b7035d7a5.png)



##　おわりに
今回はジャンプ台を作成して、自動運転で飛んでみました。
詳しく調べていませんが、simulatorのzの値、ピッチ角が怪しいので改善の余地はありそうでした。（PRお待ちしています）

炎上しそうなので私はやりませんが、大玉を横から転がしてautowareの制御なら耐えられるのかといったようなことをしてみても面白いかもしれませんね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639823/06f3cfdb-a24b-8476-aa05-6d5fcb532a9b.png)