
新しく追加されたDeepRacerの報酬関数の入力を見てみよう #reInvent
この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
re:Invent2019 ではDeepRacerの 決勝 含め 多くのイベントが開催されます。
やはり注目は DeepRacer Championship Cup Race です。

今までの AWS Summit や Virtual Circuitでの優勝者が集い決勝戦が行われます。
日本からも sola 選手(sola@DNP) 含め DNP(大日本印刷) の方々が出場されています。 皆さんも応援しましょう!
DeepRacer Evo と 新しいレース
re:Invent2019開催前の情報に 2台のカメラ、LIDARセンサー を搭載した 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_locationobjects_distanceobjects_headingobjects_left_of_centerobjects_speed
これら object は新しいルール 「Object avoidance」、「Head-to-head racing」
における 定点の障害物、もしくは BOT カー です。
Note the object could be the stationary obstacles, moving bot vehicles
それら複数 object に関する情報がパラメータとして利用できます。
▼ objects_distance
object と agent (レーシングカー)との距離のリストです。
[1.0, 2.0, 5.0] といった値の場合
- 1つめの 
objectとagentとの距離は 1.0 - 2つめの 
objectとagentとの距離は 2.0 - 3つめの 
objectとagentとの距離は 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_crashed 、 is_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カー) を避けながら速いタイムを出すために
どう工夫できるか・・・考えるのが楽しみですね!






