Last active
May 28, 2019 07:20
-
-
Save dbgeek/4b089c1ce7c5db26883737a54f5231ca to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
def reward_function(params): | |
''' | |
Example of rewarding the agent to follow center line | |
''' | |
# Calculate 3 marks that are farther and father away from the center line | |
marker_1 = 0.1 * params['track_width'] | |
marker_2 = 0.25 * params['track_width'] | |
marker_3 = 0.5 * params['track_width'] | |
speed = params['speed'] | |
steering_angel = params['steering_angle'] | |
is_left_of_center = params['is_left_of_center'] | |
all_wheels_on_track = params['all_wheels_on_track'] | |
reward = 1e-3 | |
if params['closest_waypoints'][1] >= 0 and params['closest_waypoints'][1] <= 10: | |
if speed > 1 and speed < 2: | |
reward = 1 | |
if speed > 2: | |
reward = 2 | |
if abs(steering_angel) == 0: | |
reward += 2.0 | |
if params['distance_from_center'] <= marker_1: | |
reward += 1.0 | |
elif params['distance_from_center'] <= marker_2: | |
reward += 0.5 | |
elif params['distance_from_center'] <= marker_3: | |
reward += 0.1 | |
else: | |
reward = 1e-3 # likely crashed/ close to off track | |
elif params['closest_waypoints'][1] >= 11 and params['closest_waypoints'][1] <= 24: | |
if steering_angel > 0: | |
reward = 1.0 | |
if speed < 1: | |
reward += 1 | |
if is_left_of_center: | |
reward += 1 | |
if not all_wheels_on_track: | |
reward = 1e-3 | |
elif params['closest_waypoints'][1] >= 25 and params['closest_waypoints'][1] <= 29: | |
if speed > 1 and speed < 2: | |
reward = 1 | |
if speed > 2: | |
reward = 2 | |
if abs(steering_angel) < 13: | |
reward += 0.75 | |
if not is_left_of_center: | |
reward += 1 | |
if params['distance_from_center'] <= marker_2: | |
reward += 0.5 | |
elif params['distance_from_center'] <= marker_3: | |
reward += 0.1 | |
else: | |
reward = 1e-3 # likely crashed/ close to off track | |
elif params['closest_waypoints'][1] >= 30 and params['closest_waypoints'][1] <= 33: | |
if steering_angel < 0: | |
reward = 1.0 | |
if speed > 1.5: | |
reward += 1 | |
if not is_left_of_center: | |
reward += 1 | |
if not all_wheels_on_track: | |
reward = 1e-3 | |
elif params['closest_waypoints'][1] >= 40 and params['closest_waypoints'][1] <= 44: | |
if steering_angel > 0: | |
reward = 1.0 | |
if speed < 1: | |
reward += 1 | |
if is_left_of_center: | |
reward += 1 | |
if not all_wheels_on_track: | |
reward = 1e-3 | |
elif params['closest_waypoints'][1] >= 45 and params['closest_waypoints'][1] <= 46: | |
if speed > 1 and speed < 2: | |
reward = 1 | |
if speed > 2: | |
reward = 2 | |
if abs(steering_angel) < 13: | |
reward += 0.75 | |
if params['distance_from_center'] <= marker_1: | |
reward += 1.0 | |
elif params['distance_from_center'] <= marker_2: | |
reward += 0.5 | |
elif params['distance_from_center'] <= marker_3: | |
reward += 0.1 | |
else: | |
reward = 1e-3 # likely crashed/ close to off track | |
elif params['closest_waypoints'][1] >= 47 and params['closest_waypoints'][1] <= 49: | |
if speed > 1 and speed < 2: | |
reward = 1 | |
if speed > 2: | |
reward = 2 | |
if abs(steering_angel) < 13: | |
reward += 0.75 | |
if params['distance_from_center'] <= marker_1: | |
reward += 1.0 | |
elif params['distance_from_center'] <= marker_2: | |
reward += 0.5 | |
elif params['distance_from_center'] <= marker_3: | |
reward += 0.1 | |
else: | |
reward = 1e-3 # likely crashed/ close to off track | |
elif params['closest_waypoints'][1] >= 50 and params['closest_waypoints'][1] <= 52: | |
if steering_angel > 0: | |
reward = 1.0 | |
if speed < 1: | |
reward += 1 | |
if is_left_of_center: | |
reward += 1 | |
if not all_wheels_on_track: | |
reward = 1e-3 | |
elif params['closest_waypoints'][1] >= 53 and params['closest_waypoints'][1] <= 61: | |
if speed > 1 and speed < 2: | |
reward = 1 | |
if speed > 2: | |
reward = 2 | |
if abs(steering_angel) < 13: | |
reward += 0.75 | |
if params['distance_from_center'] <= marker_1: | |
reward += 1.0 | |
elif params['distance_from_center'] <= marker_2: | |
reward += 0.5 | |
elif params['distance_from_center'] <= marker_3: | |
reward += 0.1 | |
else: | |
reward = 1e-3 # likely crashed/ close to off track | |
elif params['closest_waypoints'][1] >= 62 and params['closest_waypoints'][1] <= 67: | |
if steering_angel > 0: | |
reward = 1.0 | |
if speed < 1: | |
reward += 1 | |
if is_left_of_center: | |
reward += 1 | |
if not all_wheels_on_track: | |
reward = 1e-3 | |
elif params['closest_waypoints'][1] >= 68 and params['closest_waypoints'][1] <= 70: | |
if speed > 1 and speed < 2: | |
reward = 1 | |
if speed > 2: | |
reward = 2 | |
if abs(steering_angel) == 13: | |
reward += 0.75 | |
if params['distance_from_center'] <= marker_1: | |
reward += 1.0 | |
elif params['distance_from_center'] <= marker_2: | |
reward += 0.5 | |
elif params['distance_from_center'] <= marker_3: | |
reward += 0.1 | |
else: | |
reward = 1e-3 # likely crashed/ close to off track | |
else: | |
if params['distance_from_center'] <= marker_1: | |
reward = 1.0 | |
elif params['distance_from_center'] <= marker_2: | |
reward = 0.5 | |
elif params['distance_from_center'] <= marker_3: | |
reward = 0.1 | |
else: | |
reward = 1e-3 # likely crashed/ close to off track | |
return float(reward) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment