def __init__(self, args): '''Constructor''' self.WARM_UP = 0 self.QUALIFYING = 1 self.RACE = 2 self.UNKNOWN = 3 self.stage = args.stage self.parser = msgParser.MsgParser() self.state = carState.CarState() self.control = carControl.CarControl() self.state_size = 5 self.action_size = 3 self.model = ActorCriticModel(self.state_size, self.action_size) self.steer_lock = 0.785398 self.max_speed = 100 self.enable_training = args.enable_training self.enable_exploration = args.enable_exploration self.show_sensors = args.show_sensors self.total_train_steps = 0 self.exploration_decay_steps = args.exploration_decay_steps self.exploration_rate_start = args.exploration_rate_start self.exploration_rate_end = args.exploration_rate_end self.episode = 0 self.onRestart()
def __init__(self, args): '''Constructor''' self.parser = msgParser.MsgParser() self.state = carState.CarState() self.control = carControl.CarControl() self.state_size = 20 self.action_size = 3 self.model = LinearModel(args.replay_size, self.state_size, self.action_size) self.enable_training = args.enable_training self.enable_exploration = args.enable_exploration self.show_sensors = args.show_sensors self.exploration_decay_steps = args.exploration_decay_steps self.exploration_rate_start = args.exploration_rate_start self.exploration_rate_end = args.exploration_rate_end from wheel import Wheel self.wheel = Wheel(args.joystick_nr, args.autocenter, args.gain, args.min_level, args.max_level, args.min_force) self.steer_lock = 0.785398 self.max_speed = 100 #from plotlinear import PlotLinear #self.plot = PlotLinear(self.model, ['Speed', 'Angle', 'TrackPos'], ['Steer', 'Accel', 'Brake']) if self.show_sensors: from sensorstats import Stats self.stats = Stats(inevery=8) self.reset()
def __init__(self, stage): '''Constructor''' self.WARM_UP = 0 self.QUALIFYING = 1 self.RACE = 2 self.UNKNOWN = 3 self.stage = stage self.parser = msgParser.MsgParser() self.state = carState.CarState() self.control = carControl.CarControl() self.steer_lock = 0.785398 self.max_speed = 100 self.prev_rpm = None # Initialize the joysticks pygame.init() pygame.joystick.init() assert pygame.joystick.get_count() > 0 self.joystick = pygame.joystick.Joystick(0) self.joystick.init() print "Using joystick", self.joystick.get_name() self.csv_logger = CSVLogger('states.csv')
def __init__(self, args): '''Constructor''' self.WARM_UP = 0 self.QUALIFYING = 1 self.RACE = 2 self.UNKNOWN = 3 self.stage = args.stage self.parser = msgParser.MsgParser() self.state = carState.CarState() self.control = carControl.CarControl() self.steers = [-1.0, -0.8, -0.6, -0.5, -0.4, -0.3, -0.2, -0.15, -0.1, -0.05, 0.0, 0.05, 0.1, 0.15, 0.2, 0.3, 0.4, 0.5, 0.6, 0.8, 1.0] self.speeds = [-1.0, -0.5, 0.0, 0.5, 1.0] self.num_inputs = 19 self.num_steers = len(self.steers) self.num_speeds = len(self.speeds) self.num_actions = self.num_steers + self.num_speeds self.net = DeepQNetwork(self.num_inputs, self.num_steers, self.num_speeds, args) self.mem = ReplayMemory(args.replay_size, self.num_inputs, args) self.minibatch_size = args.batch_size if args.load_replay: self.mem.load(args.load_replay) if args.load_weights: self.net.load_weights(args.load_weights) self.save_weights_prefix = args.save_weights_prefix self.save_interval = args.save_interval self.save_replay = args.save_replay self.enable_training = args.enable_training self.enable_exploration = args.enable_exploration self.save_csv = args.save_csv if self.save_csv: self.csv_file = open(args.save_csv, "wb") self.csv_writer = csv.writer(self.csv_file) self.csv_writer.writerow(['episode', 'distFormStart', 'distRaced', 'curLapTime', 'lastLapTime', 'racePos', 'epsilon', 'replay_memory', 'train_steps']) self.total_train_steps = 0 self.exploration_decay_steps = args.exploration_decay_steps self.exploration_rate_start = args.exploration_rate_start self.exploration_rate_end = args.exploration_rate_end self.skip = args.skip self.show_sensors = args.show_sensors self.show_qvalues = args.show_qvalues self.episode = 0 self.distances = [] self.onRestart() if self.show_sensors: from sensorstats import Stats self.stats = Stats(inevery=8) if self.show_qvalues: from plotq import PlotQ self.plotq = PlotQ(self.num_steers, self.num_speeds)
def __init__(self, stage): '''Constructor''' self.WARM_UP = 0 self.QUALIFYING = 1 self.RACE = 2 self.UNKNOWN = 3 self.stage = stage self.parser = msgParser.MsgParser() self.state = carState.CarState() self.control = carControl.CarControl() self.steer_lock = 0.785398 self.max_speed = 100 self.prev_rpm = None
def __init__(self, args): '''Constructor''' self.parser = msgParser.MsgParser() self.state = carState.CarState() self.control = carControl.CarControl() assert args.load_weights is not None, "Use --load_weights" self.state_fields = args.state_fields self.state_size = len(self.state_fields) self.action_size = 3 self.model = LinearModel(args.replay_size, self.state_size, self.action_size) self.model.load(args.load_weights) self.episode = 0 self.onRestart() self.show_sensors = args.show_sensors if self.show_sensors: from sensorstats import Stats self.stats = Stats(inevery=8)
def __init__(self, stage): self.WARM_UP = 0 self.QUALIFYING = 1 self.RACE = 2 self.UNKNOWN = 3 self.stage = stage self.parser = msgParser.MsgParser() self.state = carState.CarState() self.control = carControl.CarControl() self.steer_lock = 0.785398 self.max_speed = 130 self.prev_rpm = None self.table = pandas.read_csv("../input_path/Qtable.csv") self.Accelerate = 0 self.Gearshift = 0 self.steerval = 0
def __init__(self, args): '''Constructor''' self.parser = msgParser.MsgParser() self.state = carState.CarState() self.control = carControl.CarControl() self.states = [] self.actions = [] self.filename = args.save_replay assert self.filename is not None, "Use --save_replay <filename>" from wheel import Wheel self.wheel = Wheel(args.joystick_nr, args.autocenter, args.gain, args.min_level, args.max_level, args.min_force) self.episode = 0 self.onRestart() self.show_sensors = args.show_sensors if self.show_sensors: from sensorstats import Stats self.stats = Stats(inevery=8)
def __init__(self, stage): '''Constructor''' self.WARM_UP = 0 self.QUALIFYING = 1 self.RACE = 2 self.UNKNOWN = 3 self.stage = stage self.parser = msgParser.MsgParser() self.state = carState.CarState() self.control = carControl.CarControl() # the max angle in rad that the car can turn left or right self.steer_lock = 0.785398 self.max_speed = 100 self.prev_rpm = None self.rl = learner.DriverLearner()
def __init__(self, stage): '''Constructor''' self.WARM_UP = 0 self.QUALIFYING = 1 self.RACE = 2 self.UNKNOWN = 3 self.stage = stage self.parser = msgParser.MsgParser() self.state = carState.CarState() self.control = carControl.CarControl() self.steer_lock = 0.785398 self.max_speed = 100 self.prev_rpm = None # Initialize the joysticks sdl2.SDL_Init(sdl2.SDL_INIT_JOYSTICK | sdl2.SDL_INIT_HAPTIC) assert sdl2.SDL_NumJoysticks() > 0 assert sdl2.SDL_NumHaptics() > 0 self.joystick = sdl2.SDL_JoystickOpen(0) self.haptic = sdl2.SDL_HapticOpen(0) assert sdl2.SDL_JoystickNumAxes(self.joystick) == 3 assert sdl2.SDL_HapticQuery(self.haptic) & sdl2.SDL_HAPTIC_CONSTANT # Initialize force feedback efx = sdl2.SDL_HapticEffect(type=sdl2.SDL_HAPTIC_CONSTANT, constant= \ sdl2.SDL_HapticConstant(type=sdl2.SDL_HAPTIC_CONSTANT, direction= \ sdl2.SDL_HapticDirection(type=sdl2.SDL_HAPTIC_CARTESIAN, dir=(0,0,0)), \ length=sdl2.SDL_HAPTIC_INFINITY, level=0, attack_length=0, fade_length=0)) self.effect_id = sdl2.SDL_HapticNewEffect(self.haptic, efx) sdl2.SDL_HapticRunEffect(self.haptic, self.effect_id, 1) sdl2.SDL_HapticSetAutocenter(self.haptic, 0) sdl2.SDL_HapticSetGain(self.haptic, 100) self.stats = sensorstats.Stats(inevery=8)
def __init__(self, args): '''Constructor''' self.WARM_UP = 0 self.QUALIFYING = 1 self.RACE = 2 self.UNKNOWN = 3 self.stage = args.stage self.parser = msgParser.MsgParser() self.state = carState.CarState() self.control = carControl.CarControl() self.state_size = 3 self.action_size = 3 self.model = LinearModel(args.replay_size, self.state_size, self.action_size) self.steer_lock = 0.785398 self.max_speed = 100 self.enable_training = args.enable_training self.enable_exploration = args.enable_exploration self.show_sensors = args.show_sensors self.total_train_steps = 0 self.exploration_decay_steps = args.exploration_decay_steps self.exploration_rate_start = args.exploration_rate_start self.exploration_rate_end = args.exploration_rate_end self.episode = 0 self.onRestart() #from plotlinear import PlotLinear #self.plot = PlotLinear(self.model, ['Speed', 'Angle', 'TrackPos'], ['Steer', 'Accel', 'Brake']) if self.show_sensors: from sensorstats import Stats self.stats = Stats(inevery=8)
def __init__(self, stage, lanes_str, seed): '''Constructor''' self.WARM_UP = 0 self.QUALIFYING = 1 self.RACE = 2 self.UNKNOWN = 3 self.stage = stage self.parser = msgParser.MsgParser() self.state = carState.CarState() self.control = carControl.CarControl() self.steer_lock = 0.366519 self.max_speed = 100 self.prev_rpm = None self.stuckCounter = 0 self.bringingCartBack = 0 self.lanes = [Direction[x] for x in lanes_str.split(',')] random.seed(a=seed) # Set a random seed
def __init__(self, replay_memory, deep_q_network, args): '''Constructor''' self.parser = msgParser.MsgParser() self.state = carState.CarState() self.control = carControl.CarControl() self.mem = replay_memory self.net = deep_q_network self.num_actions = 5 self.prev_rpm = None self.prev_distance = 0 self.exploration_rate = args.exploration_rate_start self.exploration_rate_start = args.exploration_rate_start self.exploration_rate_end = args.exploration_rate_end self.exploration_decay_steps = args.exploration_decay_steps self.step_count = 0 self.prev_action = [0, 0] self.stat = 0
def __init__(self, stage): '''Constructor''' self.WARM_UP = 0 self.QUALIFYING = 1 self.RACE = 2 self.UNKNOWN = 3 self.stage = stage self.parser = msgParser.MsgParser() self.state = carState.CarState() self.control = carControl.CarControl() self.steer_lock = 0.785398 self.max_speed = 160 self.prev_rpm = None #self.table=Qtable.maketable() #after first iteration self.table = pandas.read_csv("Qtable.csv") self.Accelerate = 0 self.Gearshift = 0 self.steerval = 0
def __init__(self, args): '''Constructor''' self.WARM_UP = 0 self.QUALIFYING = 1 self.RACE = 2 self.UNKNOWN = 3 self.stage = args.stage self.parser = msgParser.MsgParser() self.state = carState.CarState() self.control = carControl.CarControl() self.steers = [ -1.0, -0.8, -0.6, -0.5, -0.4, -0.3, -0.2, -0.15, -0.1, -0.05, 0.0, 0.05, 0.1, 0.15, 0.2, 0.3, 0.4, 0.5, 0.6, 0.8, 1.0 ] #self.speeds = [-1.0, -0.5, 0.0, 0.5, 1.0] self.speeds = [0.0, 0.5, 1.0] self.num_inputs = 3 self.num_steers = len(self.steers) self.num_speeds = len(self.speeds) self.learn = args.learn if self.learn == 'both': self.net = LinearModel(self.num_inputs, (self.num_steers, self.num_speeds)) self.num_actions = 2 elif self.learn == 'steer': self.net = LinearModel(self.num_inputs, (self.num_steers, )) self.num_actions = 1 elif self.learn == 'speed': self.net = LinearModel(self.num_inputs, (self.num_speeds, )) self.num_actions = 1 else: assert False self.mem = ReplayMemory(args.replay_size, self.num_inputs, self.num_actions) if args.load_replay: self.mem.load(args.load_replay) if args.load_weights: self.net.load_weights(args.load_weights) self.save_weights_prefix = args.save_weights_prefix self.save_interval = args.save_interval self.save_replay = args.save_replay self.enable_training = args.enable_training self.enable_exploration = args.enable_exploration self.save_csv = args.save_csv if self.save_csv: self.csv_file = open(args.save_csv + '.csv', "wb") self.csv_writer = csv.writer(self.csv_file) self.csv_writer.writerow([ 'episode', 'distFormStart', 'distRaced', 'curLapTime', 'lastLapTime', 'racePos', 'epsilon', 'replay_memory', 'train_steps', 'avgmaxQ', 'avgloss' ]) self.total_train_steps = 0 self.exploration_decay_steps = args.exploration_decay_steps self.exploration_rate_start = args.exploration_rate_start self.exploration_rate_end = args.exploration_rate_end self.skip = args.skip self.repeat_train = args.repeat_train self.show_sensors = args.show_sensors self.show_qvalues = args.show_qvalues self.steer_lock = 0.785398 self.max_speed = 100 self.loss_sum = self.loss_steps = 0 self.maxQ_sum = self.maxQ_steps = 0 self.episode = 0 self.distances = [] self.onRestart() if self.show_sensors: from sensorstats import Stats self.stats = Stats(inevery=8) if self.show_qvalues: from plotq import PlotQ self.plotq = PlotQ(self.num_steers, self.num_speeds, args.update_qvalues_interval)
def __init__(self, args): '''Constructor''' self.WARM_UP = 0 self.QUALIFYING = 1 self.RACE = 2 self.UNKNOWN = 3 self.stage = args.stage self.parser = msgParser.MsgParser() self.state = carState.CarState() self.control = carControl.CarControl() self.steers = [-1.0, -0.8, -0.6, -0.5, -0.4, -0.3, -0.2, -0.15, -0.1, -0.05, 0.0, 0.05, 0.1, 0.15, 0.2, 0.3, 0.4, 0.5, 0.6, 0.8, 1.0] self.speeds = [-1.0, -0.5, 0.0, 0.5, 1.0] self.num_inputs = 19 self.num_steers = len(self.steers) self.num_speeds = len(self.speeds) self.num_actions = self.num_steers + self.num_speeds self.net = DeepQNetwork(self.num_inputs, self.num_steers, self.num_speeds, args) self.mem = ReplayMemory(args.replay_size, self.num_inputs, args) self.minibatch_size = args.batch_size if args.load_weights: self.net.load_weights(args.load_weights) self.save_weights_prefix = args.save_weights_prefix self.pretrained_network = args.pretrained_network self.steer_lock = 0.785398 self.max_speed = 100 self.algorithm = args.algorithm self.device = args.device self.mode = args.mode self.maxwheelsteps = args.maxwheelsteps self.enable_training = args.enable_training self.enable_exploration = args.enable_exploration self.total_train_steps = 0 self.exploration_decay_steps = args.exploration_decay_steps self.exploration_rate_start = args.exploration_rate_start self.exploration_rate_end = args.exploration_rate_end self.show_sensors = args.show_sensors self.show_qvalues = args.show_qvalues self.episode = 0 self.onRestart() if self.show_sensors: from sensorstats import Stats self.stats = Stats(inevery=8) if self.show_qvalues: from plotq import PlotQ self.plotq = PlotQ(self.num_steers, self.num_speeds) if self.device == 'wheel': from wheel import Wheel self.wheel = Wheel(args.joystick_nr, args.autocenter, args.gain, args.min_force, args.max_force)
def __init__(self, args): '''Constructor''' self.WARM_UP = 0 self.QUALIFYING = 1 self.RACE = 2 self.UNKNOWN = 3 self.stage = args.stage self.parser = msgParser.MsgParser() self.state = carState.CarState() self.control = carControl.CarControl() self.learn = args.learn self.num_actions = 2 if self.learn == 'both' else 1 self.num_inputs = 20 self.net = DeepQNetwork(self.num_inputs, self.num_actions, args) self.mem = ReplayMemory(args.replay_size, self.num_inputs, self.num_actions, action_dtype=np.float) self.minibatch_size = args.batch_size if args.load_replay: self.mem.load(args.load_replay) if args.load_weights: self.net.load_weights(args.load_weights) self.save_weights_prefix = args.save_weights_prefix self.save_interval = args.save_interval self.save_replay = args.save_replay self.enable_training = args.enable_training self.enable_exploration = args.enable_exploration self.save_csv = args.save_csv if self.save_csv: self.csv_file = open(args.save_csv + '.csv', "wb") self.csv_writer = csv.writer(self.csv_file) self.csv_writer.writerow([ 'episode', 'distFormStart', 'distRaced', 'curLapTime', 'lastLapTime', 'racePos', 'replay_memory', 'train_steps', 'avgmaxQ', 'avgloss' ]) self.skip = args.skip self.repeat_train = args.repeat_train self.show_sensors = args.show_sensors self.show_qvalues = args.show_qvalues self.steer_lock = 0.785398 self.max_speed = 100 self.loss_sum = self.loss_steps = 0 self.maxQ_sum = self.maxQ_steps = 0 self.episode = 0 self.distances = [] self.onRestart() if self.show_sensors: from sensorstats import Stats self.stats = Stats(inevery=8) if self.show_qvalues: from plotq import PlotQ self.plotq = PlotQ(self.num_steers, self.num_speeds, args.update_qvalues_interval)