Last active
May 28, 2019 07:21
-
-
Save dbgeek/b4803a789cc50882a697482004749614 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 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] >= 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