Esempio n. 1
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 = 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')
Esempio n. 2
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.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()
Esempio n. 3
0
    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()
Esempio n. 4
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.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)
Esempio n. 5
0
 def __init__(self, accel = 0.0, brake = 0.0, gear = 1, steer = 0.0, clutch = 0.0, focus = 0, meta = 0):
     '''Constructor'''
     self.parser = msgParser.MsgParser()
     
     self.actions = None
     
     self._accel = accel
     self._brake = brake
     self._gear = gear
     self._steer = steer
     self._clutch = clutch
     self._focus = focus
     self._meta = meta
Esempio n. 6
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 = 100
        self.prev_rpm = None
Esempio n. 7
0
    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
Esempio n. 8
0
    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)
Esempio n. 9
0
    def __init__(self,
                 accel=0.0,
                 brake=0.0,
                 gear=1,
                 steer=0.0,
                 clutch=0.0,
                 focus=0,
                 meta=0):

        self.parser = msgParser.MsgParser()

        self.actions = None

        self.accel = accel
        self.brake = brake
        self.gear = gear
        self.steer = steer
        self.clutch = clutch
        self.focus = focus
        self.meta = meta
Esempio n. 10
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)
Esempio n. 11
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()

        # 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()
Esempio n. 12
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 = 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)
Esempio n. 13
0
 def __init__(self):
     self.parser = msgParser.MsgParser()
     self.sensors = None
     self.angle = None
     self.curLapTime = None
     self.damage = None
     self.distFromStart = None
     self.distRaced = None
     self.focus = None
     self.fuel = None
     self.gear = None
     self.lastLapTime = None
     self.opponents = None
     self.racePos = None
     self.rpm = None
     self.speedX = None
     self.speedY = None
     self.speedZ = None
     self.track = None
     self.trackPos = None
     self.wheelSpinVel = None
     self.z = None
Esempio n. 14
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.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)
Esempio n. 15
0
    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
Esempio n. 16
0
 def __init__(self):
     """Constructor"""
     self.parser = msgParser.MsgParser()
     self.sensors = None
     self._angle = None
     self._curLapTime = None
     self._damage = None
     self._distFromStart = None
     self._distRaced = None
     self._focus = None
     self._fuel = None
     self._gear = None
     self._lastLapTime = None
     self._opponents = None
     self._racePos = None
     self._rpm = None
     self._speedX = None
     self._speedY = None
     self._speedZ = None
     self._track = None
     self._trackPos = None
     self._wheelSpinVel = None
     self._z = None
Esempio n. 17
0
    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
Esempio n. 18
0
 def __init__(self):
     '''Constructor'''
     self.parser = msgParser.MsgParser()
     self.sensors = None
     # angle of the car from the direction of the track (radians)
     # [-pi, +pi]
     self.angle = None
     self.curLapTime = None
     self.damage = None
     # distance from the start line, starting with 0 at the start line.
     # Not very useful
     self.distFromStart = None
     # the distance going forward along the track that the car has gone
     # since the start of the race
     self.distRaced = None
     self.focus = None
     self.fuel = None
     self.gear = None
     # lap time is in seconds
     self.lastLapTime = None
     self.opponents = None
     self.racePos = None
     self.rpm = None
     # speed is in kph
     # forwards
     self.speedX = None
     # sideways
     self.speedY = None
     # airborne
     self.speedZ = None
     self.track = None
     # how you are from the edge of the track
     # [-1,1] - left edge to right edge
     self.trackPos = None
     self.wheelSpinVel = None
     self.z = None
Esempio n. 19
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
Esempio n. 20
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)
Esempio n. 21
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.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)
Esempio n. 22
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.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)