Skip to content

Instantly share code, notes, and snippets.

@dbgeek
Last active May 28, 2019 07:20
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dbgeek/4b089c1ce7c5db26883737a54f5231ca to your computer and use it in GitHub Desktop.
Save dbgeek/4b089c1ce7c5db26883737a54f5231ca to your computer and use it in GitHub Desktop.
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