AutomotiveAIChallenge / aichallenge-documentation-2024

aichallenge 2024
15 stars 5 forks source link

講座内容の提案 #32

Closed masahiro-kubota closed 5 months ago

masahiro-kubota commented 7 months ago

問題

講座内容の作成方針を明確化する

提案内容

  1. Autoware入門講座

    • はじめに
    • 環境構築
  2. 車両インターフェース(Vehicle)

    • <目標>ゴールすること。
      1. 車両の直進
      2. 車両の旋回
      3. 車両の後退
  3. 自己位置推定(Localization)

    • <目標>ゴールしたら停止すること。
      1. 自己位置(GNSS)を取得してみる。
      2. GNSSに基いてゴールラインを越えたら減速・停止するようにする。
  4. 制御(Control)

    • <目標>目標速度でゴールすること。
      1. 速度を取得してみる。
      2. 加速度で速度が一定になるように制御する(シミュレータは加速度を受け取る設定)。
  5. 計画(Planning)

    • <目標>障害物(路駐車両)に衝突せずにゴールすること。
      1. 障害物に衝突しないように経路計画する。。
      2. 経路に基いて軌道計画する。
  6. 外界認識(Sensing)

    • <目標>センサーに基いて障害物を認識し衝突せずにゴールすること
      1. lidarから点群を取得してみる。
      2. 点群情報に基いて経路・軌道計画する。

Rvizやmatplotlibなどによる可視化は各章で逐次説明。

タスク

確認事項

@isamu-takagi

isamu-takagi commented 7 months ago

Vehicleは加速度入力を受け取って、Controlは加速度で速度を制御する形にしたいと思っています。

ありがとうございます。加速度入力に変更すると目標位置で減速しきれずに止まれなくなってしまうので「2. 自己位置推定」と「3.制御」は入れ替えた方が良さそうに思いました。

masahiro-kubota commented 7 months ago

「自己位置推定」では「ゴール超え(自己位置推定でゴール越え検出)」かつ「停止」という判定にするつもりでした。

Autowareでは縦方向制御は速度を制御するもので、位置を制御するためには軌道計画を用いるという方針だったと思います。 なので位置を制御しようとすると「制御」と「計画」を先に持ってきたくなったのですが、「計画」をするためには「自己位置推定」が必要となってしまい・・・というループになってしまいました。

そのためイシューのような順番で、「自己位置推定」では「ゴール超え(自己位置推定でゴール越え検出)」かつ「停止」という判定を行うというのが良いのかなと思っていました。

いかがでしょうか。

isamu-takagi commented 7 months ago

章は Autowareのコンポーネント(control, localization) 単位で考えていましたが、無理にまとめず、縦制御→自己位置推定→横制御とするのが良いかもしれませんね。

可視化ツールについては私がrviz以外で見かけたことがあるのはこのあたりです。

masahiro-kubota commented 7 months ago

ありがとうございます!頂いたアドバイスを踏まえて2つ案を作りました。

前者は元の案の微修正版で、後者は順番をかなり入れ替えました。

個人的には後者の方がいいかなと思っています。 コンポーネントごとに分割するという初期の構想は崩れてしまっていますが、縦方向の話だけで軌道計画まで行けてるので序盤がシンプルでわかりやすくなってる気がします。

アドバイスよろしくお願いします!


  1. Autoware入門講座

    • はじめに
    • 環境構築
  2. 車両インターフェース(Vehicle)

    • <目標>ゴールすること。
      1. 車両の直進
      2. 車両の旋回
      3. 車両の後退
  3. 縦方向制御

    • <目標>車両速度を目標速度に収束させる。
      1. 車速を取得してみる。
      2. PID制御で車両速度を目標速度に収束させる。
  4. 自己位置推定(Localization)

    • <目標>ゴールしたら停止させる。
      1. 自己位置(GNSS)を取得してみる。
      2. GNSSに基づいてゴールラインを越えたら減速・停止するようにする。
  5. 横方向制御

    • <目標>設定された経路に追従させる。
      1. pure pursuitを実装してみる。
  6. 計画(Planning)

    • <目標>障害物(路駐車両)に衝突せずにゴールさせる。
      1. 障害物に衝突しないように経路計画する。。
      2. 経路に基づいて軌道計画する。
  7. 外界認識(Sensing)

    • <目標>センサーに基いて障害物を認識し衝突せずにゴールさせる。
      1. lidarから点群を取得してみる。
      2. 点群情報に基づいて経路・軌道計画する。

または


  1. 縦方向制御

    • <目標>車両速度を目標速度に収束させる。
      1. 車速を取得してみる。
      2. PID制御で車両速度を目標速度に収束させる。
  2. 自己位置推定(Localization)

    • <目標>ゴールを過ぎたら車両を停止させる。
      1. 自己位置(GNSS)を取得してみる。
      2. GNSSに基づいてゴールラインを越えたら減速・停止するようにする。
  3. 軌道計画(縦方向のみ)

    • <目標>ゴールで車両をぴったり停止させる。
      1. 直線経路からゴールで停止するための軌道計画を行う。
  4. 曲線経路追従(横方向制御)

    • <目標>設定された曲線経路に車両を追従させる。
      1. 軌道計画を行う。
      2. pure pursuitで車両を追従させる。
  5. 障害物回避(経路計画)

    • <目標>障害物(路駐車両)に衝突せずにゴールさせる。
      1. 障害物に衝突しないように経路計画する。
      2. 経路に車両を追従させる。
  6. 外界認識(Sensing)

    • <目標>センサーに基づいて障害物を認識し衝突せずにゴールさせる。
      1. lidarから点群を取得し障害物検知をする。
      2. 点群情報に基づいて経路・軌道計画し車両を追従させる。
isamu-takagi commented 7 months ago

後者が良さそうです! 内容的に近いので2〜4を速度計画、5~6を経路計画とまとめてしまうのはどうでしょうか? 自己位置推定はGNSSそのまま使っているだけですし、必要に応じて後から別途本格的な章として追加するのもありかと思います。

MasanoriSuda commented 7 months ago

私も後者の方がよいと思いました。すでに検討済みかもしれませんが、PID制御、pure pursuit等の理解は初学者にはきついと思うので、前の方の章ではAutoware-Microのような簡易的なものを用意してあまり考えずに動くことだけ確認してもらい、後ろの方の章で勉強したい人向けの章があるといいかな、と思いました。

masahiro-kubota commented 7 months ago

お二方ともありがとうございます!

@isamu-takagi 確かに2〜4を速度計画、5~6を経路計画とまとめたらスッキリしました!

@MasanoriSuda 確かにそうですね。最初は受講者が問題を解いていくとAutowareが完成するような形を考えていたのですが、最初に完成形を提示して動かしてもらって、これを少しずつ作っていくというような見せ方にしたほうが分かりやすいですね。 Autoware tinyとかですかね笑。あまり増えるのも困りますが笑。

以下のようにまとめてみました!

提案内容

  1. Autoware入門講座

    • はじめに
    • 環境構築(「4. 外界認識」までの完成形を動かしてもらう。「1. 車両インターフェース」以降はそれとは別に部分的に自分で作り上げてもらう感じ。)
  2. 車両インターフェース

    • <目標>ゴールすること。
      1. 車両の直進
      2. 車両の旋回
      3. 車両の後退
  3. 速度計画

    • <目標>ゴールで車両をぴったり停止させる。
      1. 車速を取得する。
      2. PID制御で車両速度を目標速度に収束させる。
      3. ゴールで停止するための速度計画を行う。
  4. 経路計画

    • <目標>障害物(路駐車両)に衝突せずにゴールさせる。
      1. 障害物に衝突しないように経路計画を行う。
      2. 経路を基に軌道計画を行う。
      3. PIDとpure pursuitで車両を軌道に追従させる。
  5. 外界認識

    • <目標>センサーに基づいて障害物を認識し衝突せずにゴールさせる。
      1. lidarから点群を取得し障害物検知をする。
      2. 点群情報に基づいて経路・軌道計画し車両を追従させる。

Rviz、plot juggler、foxglove studio、matplotlibなどによる可視化は各章で逐次説明する。

よろしくお願いします!

isamu-takagi commented 7 months ago

@norikenpi @MasanoriSuda コメント&反映ありがとうございます。章の構成としてはかなりまとまってきたので一旦こちらで進めましょう!

masahiro-kubota commented 7 months ago

後ほど上記を踏まえたものをPRします!