LoginSignup
4

posted at

updated at

AWSIMでジャンプしてみる

概要

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

image.png

環境

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

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

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に書いてあるのでぜひ使ってみてください。

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

image.png

検証

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

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

適当にならべてみましょう。
image.png

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

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

image.png

step実行で見てみましょう。干渉判定がしっかり働いているのでタイヤが木に乗り上げてますね。
image.png

autowareで制御するときはobstacle stop plannerで木材が障害物判定されてしまうのでobstacle cruise plannerを使うようにします。
image.png

  <!-- 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)"/>

ゴールまで走行できましたかね。

解析する

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

以下のコマンドで起動しましょう。

ros2 run plotjuggler plotjuggler

startというボタンを押してから以下のものを選択していきましょう。

/localization/kinematic_state
/localization/acceleration
/control/command/control_cmd

image.png

poseのzの値がところどころスパイク状になっていますが、丸太で上下に揺れた影響でした。
image.png

autowareでjumpしてみる

create obejectからQuadを選択して、ジャンプ台を作成していきましょう。
image.png

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

飛んだー! 
image.png

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

落下地点をミスると突き刺さりますね。lidarのセンサ値も変動が大きいのでピッチ角変動に対する耐久性は将来的には課題になりそうですね。
実際にやるとすごく危ないので実機での検証はおすすめはできないです。
image.png

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

見やすいようにmain cameraについているfollow cameraのスクリプトを外して移動させます。
image.png

一応目安として適当な大きさのにキューブを置くと良いと思います。今回は高さ2mの台で幅3mジャンプ台?としました。
image.png

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

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

z方向の速度は特に計算されていなさそうですね。
image.png

高さ1mの台にして斜度を低くし再チャレンジしてみました。頼む!
output.gif
1mなら飛べましたね。

斜度が同じであればどこまでものばしても飛べそうでした。
image.png

いろいろと試してみましょう。
image.png

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

炎上しそうなので私はやりませんが、大玉を横から転がしてautowareの制御なら耐えられるのかといったようなことをしてみても面白いかもしれませんね。
image.png

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
4