def _set_skew_on_events(self, track: Track): e: Event for e in self.events: (track_bearing, _) = track.get_bearing_and_distance_to_next_waypoint( e.before_waypoint_index) e.skew = get_turn_between_directions(track_bearing, e.true_bearing)
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()