Ejemplo n.º 1
0
 def get_reward_input_params(self, current_track: Track):
     point = (self.x, self.y)
     side = current_track.get_position_of_point_relative_to_waypoint(
         point, self.closest_waypoint_index)
     params = {
         'all_wheels_on_track':
         self.all_wheels_on_track,
         'x':
         self.x,
         'y':
         self.y,
         'heading':
         self.heading,
         'distance_from_center':
         self.distance_from_center,
         'projection_distance':
         0.0,  # TODO
         'progress':
         self.progress,
         'steps':
         float(self.step),
         'speed':
         float(self.speed),
         'steering_angle':
         float(self.steering_angle),
         'track_width':
         current_track.get_width(),
         'track_length':
         float(self.track_length),
         'waypoints':
         current_track.get_all_waypoints(),
         'closest_waypoints':
         [int(self.before_waypoint_index),
          int(self.after_waypoint_index)],
         'is_left_of_center':
         side == "L",
         'is_reversed':
         self.status == _STATUS_REVERSED,
         'is_crashed':
         self.status == _STATUS_CRASHED,
         'is_offtrack':
         self.status == _STATUS_OFF_TRACK,
         'closest_objects': [0, 0],  # TODO
         'objects_location': [],  # TODO
         'objects_left_of_center': [],  # TODO
         'object_in_camera': [],  # TODO
         'objects_speed': [],  # TODO
         'objects_heading': [],  # TODO
         'objects_distance_from_center': [],  # TODO
         'objects_distance': []  # TODO
     }
     return params
Ejemplo n.º 2
0
    def show_event(self, event: Event, track: Track):
        (previous_bearing,
         _) = track.get_bearing_and_distance_from_previous_waypoint(
             event.before_waypoint_index)
        (current_bearing, _) = track.get_bearing_and_distance_to_next_waypoint(
            event.before_waypoint_index)
        (next_bearing, _) = track.get_bearing_and_distance_to_next_waypoint(
            event.after_waypoint_index)

        self.waypoint_lap_position.set(
            str(
                round(
                    track.get_waypoint_percent_from_race_start(
                        event.closest_waypoint_index), 1)) + "  %")
        self.waypoint_previous_id.set(str(event.before_waypoint_index))
        self.waypoint_closest_id.set(str(event.closest_waypoint_index))
        self.waypoint_next_id.set(str(event.after_waypoint_index))

        self.waypoint_previous_bearing.set(str(round(previous_bearing)))
        self.waypoint_current_bearing.set(str(round(current_bearing)))
        self.waypoint_next_bearing.set(str(round(next_bearing)))

        self.state_progress.set(str(round(event.progress, 1)) + "  %")
        self.state_time.set(str(round(event.time_elapsed, 1)) + "  secs")
        self.state_step.set(str(event.step))
        self.state_track_speed.set(str(round(event.track_speed, 1)) + "  m/s")
        self.state_progress_speed.set(
            str(round(event.progress_speed, 1)) + "  m/s")
        self.state_heading.set(str(round(event.heading)))
        self.state_true_bearing.set(str(round(event.true_bearing)))
        self.state_slide.set(str(round(event.slide)))
        self.state_skew.set(str(round(event.skew)))
        self.state_side.set(
            track.get_position_of_point_relative_to_waypoint(
                (event.x, event.y), event.closest_waypoint_index))
        self.state_distance_from_centre.set(
            str(round(event.distance_from_center, 2)))
        self.state_all_wheels_on_track.set(str(event.all_wheels_on_track))
        if event.acceleration > 0.0:
            self.state_acceleration.set(
                str(round(event.acceleration, 1)) + "  m/s/s")
        else:
            self.state_acceleration.set("---")
        if event.braking > 0.0:
            self.state_braking.set(str(round(event.braking, 1)) + "  m/s/s")
        else:
            self.state_braking.set("---")
        self.state_projected_travel_distance.set(
            str(round(event.projected_travel_distance, 1)) + " m")

        self.action_id.set(str(event.action_taken))
        self.action_steering.set(get_formatted_steering(event.steering_angle))
        self.action_speed.set(str(event.speed) + "  m/s")
        self.action_sequence.set(str(event.sequence_count))

        self.reward_value.set(get_pretty_large_float(round(event.reward, 5)))
        self.reward_average.set(
            get_pretty_large_integer(event.average_reward_so_far))
        self.reward_total.set(get_pretty_large_integer(event.reward_total))
        self.discounted_future_reward.set(
            get_pretty_large_integer(event.discounted_future_rewards[0]))
        if self._config_manager.get_calculate_new_reward():
            self.new_reward.set(
                get_pretty_large_float(round(event.new_reward, 5)))
            self.new_discounted_future_reward.set(
                get_pretty_large_integer(event.new_discounted_future_reward))

        if self._config_manager.get_calculate_alternate_discount_factors():
            for i, r in enumerate(self.other_discounted_future_rewards):
                r.set(
                    get_pretty_large_integer(
                        event.discounted_future_rewards[i + 1]))

        self.debug_output.set(get_formatted_debug(
            event.debug_log, 10, 80, []))  # TODO - expose configuration
        self.lift()