Help us understand the problem. What is going on with this article?

DeepRacer実機を動かしてみたinAWS Summit Tokyo time12.94

More than 1 year has passed since last update.

使ったモデル

強化学習もAWSも未経験だったのでまずAWSの公式ドキュメントを参考にモデルを作ってみました。
コース上に4輪が留まる且つ直近のwaypointの角度と車体の角度に大きなずれがなければ高い報酬を得るように設計しました。コース内に留まることを目的としたモデルです。

model_1.py
def reward_function(params):
    import math

    # paramsの取得
    waypoints = params['waypoints']
    closest_waypoints = params['closest_waypoints']
    heading = params['heading']
    all_wheels_on_track = params['all_wheels_on_track']
    distance_from_center = params['distance_from_center']
    track_width = params['track_width']

    # 報酬の初期値
    reward = 1e-3

    # コースのセンターに近いほど高い報酬を設定
    if all_wheels_on_track and (0.5*track_width - distance_from_center) >= 0.2:
        reward = 1.0
    elif all_wheels_on_track and (0.5*track_width - distance_from_center) >= 0.1:
        reward = 0.8
    elif all_wheels_on_track and (0.5*track_width - distance_from_center) >= 0.05:
        reward = 0.5


    # 現在の位置から最も近い次のwaypointと前のwaypointを取得する
    next_point = waypoints[closest_waypoints[1]]
    prev_point = waypoints[closest_waypoints[0]]

    # 前のwaypointから次のwaypointに向かう角度(radian)を計算する
    track_direction = math.atan2(next_point[1] - prev_point[1], next_point[0] - prev_point[0]) 
    # degreeに変換
    track_direction = math.degrees(track_direction)

    # コース上の基準軸に対する車体の向きと直近のwaypointを繋ぐ向きの差分を取る
    direction_diff = abs(track_direction - heading)

    # 算出した方向の差分から車体の向きが大きくズレている場合にペナルティを与える

    DIRECTION_THRESHOLD = 10.0
    if direction_diff > DIRECTION_THRESHOLD:
        reward *= 0.5

    return float(reward)

DeepRacer内の強化学習がどのようになっているのか把握できてないのですが、報酬に傾斜をつけた方がモデルの学習が進みやすいと考えて、コースのセンターと車両の距離に対して報酬の傾斜をつけています。

学習は5時間(クローン前のモデルで2時間学習済み)
ハイパーパラメータは初期値のままです。

実機を動かしてみて

このモデルではMaximumSpeedを約40%ではほぼ確実に完走できました。
それより上げるとout側にコースアウトすることがほとんどでした。

会場でちらっと聞いた話ではMaximumSpeedが60%でも完走できるモデルだと、
タイムはかなりいいそうです。

ちなみにシミュレーションのEvaluationでは
| 1 | 00:00:23.434 | 100% |
| 2 | 00:00:23.029 | 100% |
| 3 | 00:00:25.052 | 100% |
でした。

初日に僕が見た時間でtopだった方がアウトインアウトするように報酬を与えたと言っていたけど、
どういう報酬関数を組んだのだろう。。。

Screenshot_20190613-123637.jpg

temp_ge
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away