新しく追加されたDeepRacerの報酬関数の入力を見てみよう #reInvent

2019.12.03

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

re:Invent2019 ではDeepRacerの 決勝 含め 多くのイベントが開催されます。

やはり注目は DeepRacer Championship Cup Race です。

今までの AWS Summit や Virtual Circuitでの優勝者が集い決勝戦が行われます。

日本からも sola 選手(sola@DNP) 含め DNP(大日本印刷) の方々が出場されています。 皆さんも応援しましょう!

DeepRacer Evo と 新しいレース

re:Invent2019開催前の情報に 2台のカメラ、LIDARセンサー を搭載した DeepRacer Evo が発表されています。

[速報] 2台のカメラとLIDARセンサーを搭載した AWS DeepRacer Evo が発表されました!

来年の DeepRacer は新しいルールが追加されるみたいで、 現在のDeepRacerマネジメントコンソールの画面も少し変化が見られます。

  • Time trial: 従来のタイムアタック
  • Object avoidance: 障害物有りのレース
  • Head-to-head racing: 他車(BOTカー)混在のレース

といったところでしょうか。

あわせて DeepRacer のドキュメント、報酬関数の入力パラメータ もアップデートされていました。 (2019/12/02現在 英語版のみ)

新しく追加された入力パラメータを見ていきます。

まとめ

Input Parameters of the AWS DeepRacer Reward Function に記載されているパラメータは以下のとおりです。 New! の部分が新規追加されているパラメータです。

New? 項目
"all_wheels_on_track": Boolean,
"x": float,
"y": float,
New! "closest_objects": [int, int],
"closest_waypoints": [int, int],
"distance_from_center": float,
New! "is_crashed": Boolean,
"is_left_of_center": Boolean,
New! "is_offtrack": Boolean,
New! "is_reversed": Boolean,
New! "is_terminated": Boolean,
"heading": float,
New! "objects_distance": [float, ],
New! "objects_heading": [float, ],
New! "objects_left_of_center": [Boolean, ],
New! "objects_location": [(float, float),],
New! "objects_speed": [float, ],
"progress": float,
"speed": float,
"steering": float,
"steps": int,
New! "track_length": float,
"track_width": float,
"waypoints": [(float, float), ]

詳細

New! パラメータの内容を見ていきましょう。

objects_XXX

まず目につくのが objects_XXX というパラメータたちです。

  • objects_location
  • objects_distance
  • objects_heading
  • objects_left_of_center
  • objects_speed

これら object は新しいルール 「Object avoidance」、「Head-to-head racing」 における 定点の障害物、もしくは BOT カー です。

Note the object could be the stationary obstacles, moving bot vehicles

それら複数 object に関する情報がパラメータとして利用できます。

▼ objects_distance

objectagent (レーシングカー)との距離のリストです。 [1.0, 2.0, 5.0] といった値の場合

  • 1つめの objectagent との距離は 1.0
  • 2つめの objectagent との距離は 2.0
  • 3つめの objectagent との距離は 5.0

といった意味になります。

▼ objects_location

object の位置情報 (x,y) のリストです。 BOTカーの場合、この値は時間の経過で変動することになります。

▼ objects_heading

座標系の x 軸に対する object の進行方向(度)のリストです。 従来の入力パラメータに レーシングカーの進行方向を表す heading がありましたが、 それの object 版です。 BOTカーのためのパラメータです。

▼ objects_speed

object の速度のリストです。定点の障害物の場合この値は 0 になります。 これも BOTカーのためのパラメータですね。

▼ objects_left_of_center

object がトラックレーンの左サイド( True ) にいるか、 右サイド( False ) にいるかの真偽値のリストです。

closest_objects

こちらも object 関連の値で、レーシングカーに最も接近している object のインデックスを返します。 従来の入力パラメータに closest_waypoints がありましたが、 それの object 版ですね。

is_crashed

レーシングカーが クラッシュしたら True になります。

A Boolean flag to indicate whether the agent has crashed into another object (True) or not (False) as a termination status.

と記載されています。 object にぶつかってしまうと クラッシュ判定となるみたいですね。

is_offtrack

レーシングカーが off track 状態になっているかどうかの真偽値です。

all_wheels_on_track と似たようなパラメータですが、 is_offtrack は終了状態として使用される旨が書かれています。

A Boolean flag to indicate whether the agent has off track (True) or not (False) as a termination status.

is_reversed

レーシングカーが逆走しているか、していないかの真偽値です。

is_terminated

ある走行が終了したか、していないかの真偽値です。

上で出てきた is_crashedis_offtrack の値と関連性があるパラメータです。

  • When the agent becomes crashed, the episode terminates and, hence, both is_terminated and is_crashed values are True .
  • When the agent goes off track, the episode terminates, and, hence, both is_terminated and is_crashed values are set to True.

track_length

トラックの幅 track_witdh に加えて、 トラックの全長 track_length が追加されました。

おわりに

ざっと見てみました。

新しい DeepRacer Evo の 光検出/測距(LIDAR)センサー を活用した パラメータが登場した感じでしょうか。

これで報酬関数設計のバリエーションが更に増えました。

object (障害物・BOTカー) を避けながら速いタイムを出すために どう工夫できるか・・・考えるのが楽しみですね!