DeepRacer 報酬関数について


はじめに

DeepRacerでタイム向上を狙う上で最も重要となるのが報酬関数になると思います。
初期状態だと下記のように「track_width(トラックの幅)」と「distance_from_center(車体の中心とトラックの中心の距離)」しか使用していなく、これだけではコースアウトばかりでした。

しかし報酬関数について調べても関数1つ1つに対して詳細に記載があるページは少なかったです。。。
AWS公式ドキュメントに記載がありましたがすぐにコーディング出来る程の記載はありませんでした。

そこで報酬関数について自分で調べて検証をした結果をここにまとめていこうと考えました。

そもそもDeepRacerってなに?どうやって始めるの?という方は、同じ会社の先輩が記事にまとめているのでそちらをご覧ください。
https://qiita.com/toma_shohei/items/be1ff2549c99f026829b
https://qiita.com/toma_shohei/items/a79abd8d71a2e284273f

報酬関数リスト

調査・検証が出来次第、詳細記事を書いて下記リストにリンクをつけていければと考えています。
更新まで少々お待ちください。。。
まずは比較の基準として報酬関数無しでモデルを作成して検証してみました。

  • 報酬関数無し

  • all_wheels_on_track [Boolean]

    • 車両のすべてのホイールがトラック内にあるかを示します。
  • x [float]、y [float]

    • シミュレーション環境の左下隅を原点として車両の座標を示します。
  • closest_objects [int,int]

    • 車両に最も近い2つの障害物の位置(x,y)
  • closest_waypoints [int,int]

    • 車両に最も近い2つのウェイポイントの位置(x,y)
  • distance_from_center [float]

    • 車両の中心とトラックの中心との距離
  • is_crashed [Boolean]

  • is_left_of_center [Boolean]

    • 車両がトラックの中心より左側にある場合はTrue、右側にある場合はFalseを返すフラグです。
  • is_offtrack [Boolean]

  • is_reversed [Boolean]

  • heading [float]

  • objects_distance [float]

  • objects_heading [float]

  • objects_left_of_center [Boolean]

  • objects_location [float,float]

  • objects_speed [float]

  • progress [float]

  • speed [float]

  • steering_angle [float]

  • steps [int]

  • track_length [float]

  • track_width [float]

  • waypoints [float,float]