예제 #1
0
 def __init__(self,
              hostname='localhost',
              port=3001,
              *,
              driver=None,
              serializer=None,
              data=None):
     self.hostaddr = (hostname, port)
     self.driver = driver or Driver()
     self.serializer = serializer or Serializer()
     self.state = State.STOPPED
     self.socket = None
     self.datafile = data
     _logger.debug('Initializing {}.'.format(self))
     self.crashed = False
     self.stuck = False
     self.fitness = 0
     self.timespend = 0
     self.stack = 0
     self.count = 0
     self.sumspeed = 0
     self.speed = 0
     self.position = 0
     self.positionReward = 0
     self.accelReward = 0
     self.countOutside = 0
예제 #2
0
    def __init__(self,
                 model_file,
                 H,
                 depth,
                 port,
                 record_train_file=None,
                 normalize=False):
        super().__init__(False)
        if normalize:
            self.norm = True
        else:
            self.norm = False

        # Select right model
        if depth == 3:
            self.model = train.ThreeLayerNet(22, H, 3)
        elif depth == 5:
            self.model = train.FiveLayerNet(22, H, 3)
        else:
            print("Using depth=2")
            self.model = train.TwoLayerNet(22, H, 3)
        # Load model
        self.model.load_state_dict(
            torch.load(model_file, map_location=lambda storage, loc: storage))

        # Check if we want to record the actuator & sensor data
        self.record = False
        if record_train_file is not None:
            self.record = True
            self.file_handler = open(record_train_file, 'w')
            self.file_handler.write("ACCELERATION,BRAKE,STEERING,SPEED,\
            TRACK_POSITION,ANGLE_TO_TRACK_AXIS,TRACK_EDGE_0,TRACK_EDGE_1,\
            TRACK_EDGE_2,TRACK_EDGE_3,TRACK_EDGE_4,TRACK_EDGE_5,TRACK_EDGE_6,\
            TRACK_EDGE_7,TRACK_EDGE_8,TRACK_EDGE_9,TRACK_EDGE_10,\
            TRACK_EDGE_11,TRACK_EDGE_12,TRACK_EDGE_13,TRACK_EDGE_14,\
            TRACK_EDGE_15,TRACK_EDGE_16,TRACK_EDGE_17,TRACK_EDGE_18")

        self.is_leader = True
        self.helper = StupidDriver(self.record)
        self.standard_driver = Driver()
        self.race_started = False
        self.recovers = 0
        self.recover_mode = False
        self.speeds = []

        self.dict = {}
        self.dict["crashes"] = []
        self.crash_recorded = False
        self.dict_teammate = {}
        self.port = port
        self.partner = -1

        path = os.path.abspath(os.path.dirname(__file__))
        for i in os.listdir(path):
            if os.path.isfile(os.path.join(path, i)) and 'mjv_partner' in i:
                try:
                    os.remove(path + "/" + i)
                except:
                    pass
예제 #3
0
def test_init_encoding():
    d = Driver(False)
    s = Serializer()

    data = {'init': d.range_finder_angles}
    encoded = s.encode(data, prefix='SCR')

    assert encoded == b'SCR(init -90 -75 -60 -45 -30 -20 -15 -10 -5 0 5 10 15 20 30 45 60 75 90)'
예제 #4
0
    def __init__(self, hostname='localhost', port=3001, *,
                 driver=None, serializer=None):
        self.hostaddr = (hostname, port)
        self.driver = driver or Driver()
        self.serializer = serializer or Serializer()
        self.state = State.STOPPED
        self.socket = None

        _logger.debug('Initializing {}.'.format(self))
예제 #5
0
 def __init__(self, logdata=True):
     """ Handles difficult situations in which the car gets stuck
     """
     super(CrisisDriver, self).__init__(logdata=logdata)
     self.iter = 0
     self.driver = Driver(logdata=False)
     self.is_in_control = False
     self.approaches = [self.navigate_to_middle, self.original_implementation]
     self.previous_angles = []
     self.previous_accels = []
     self.previous_gears  = []
     self.bad_counter = 0
     self.needs_help = False
예제 #6
0
 def __init__(self, steering_values, global_max_speed):
     super(Final_Driver, self).__init__()
     self.steer = ffnn_steer.Steer(10)
     self.steer.load_state_dict(torch.load("./steer.data"))
     self.speed = ffnn_speed.Speed(10)
     self.speed.load_state_dict(torch.load("./ffnn_speed.data"))
     self.back_up_driver = Driver(logdata=False)
     self.bad_counter = 0
     self.lap_counter = 0
     self.brake_row = 0
     self.angles = [90, 75, 60, 45, 30, 20, 15, 10, 5, 0, -5, -10, -15, -20, -30, -45, -60, -75, -90]
     self.alphas = [math.radians(x) for x in self.angles]
     self.last_opponents = [0 for x in range(36)]
     self.steering_values = steering_values
     self.global_max_speed = global_max_speed
예제 #7
0
    def __init__(self,
                 hostname='localhost',
                 port=3001,
                 *,
                 driver=None,
                 serializer=None):
        self.hostaddr = (hostname, port)
        self.driver = driver or Driver()
        self.serializer = serializer or Serializer()
        self.state = State.STOPPED
        self.socket = None
        self.fitness = -1.
        self.offroad_count = 0
        self.turn_around_count = 0
        self.negative_speed_count = 0

        _logger.debug('Initializing {}.'.format(self))
예제 #8
0
def test_special_messages(mock_socket_ctor):
    mock_socket = mock.MagicMock()
    mock_socket_ctor.return_value = mock_socket
    mock_driver = mock.MagicMock()
    mock_driver.range_finder_angles = Driver(False).range_finder_angles
    client = Client(driver=mock_driver)
    assert client.state is State.STOPPED

    mock_socket.recvfrom = mock.MagicMock(side_effect=[(b'***identified***', None),
                                                       (b'***restart***', None),
                                                       (b'***shutdown***', None)])

    client.run()
    assert client.state is State.STOPPED

    # not supported on server side
    assert mock_driver.on_restart.call_count == 1
    assert mock_driver.on_shutdown.call_count == 1
예제 #9
0
    def __init__(self, model_file, H, depth, record_train_file=None, normalize=False):
        super().__init__(False)
        if normalize:
            self.norm = True
        else:
            self.norm = False

        # Select right model
        if depth == 3:
            self.model = train.ThreeLayerNet(22, H, 3)
        elif depth == 5:
            self.model = train.FiveLayerNet(22, H, 3)
        else:
            print("Using depth=2")
            self.model = train.TwoLayerNet(22, H, 3)
        # Load model
        self.model.load_state_dict(torch.load(
            model_file, map_location=lambda storage, loc: storage))

        # Check if we want to record the actuator & sensor data
        self.record = False
        if record_train_file is not None:
            self.record = True
            self.file_handler = open(record_train_file, 'w')
            self.file_handler.write("ACCELERATION,BRAKE,STEERING,SPEED,\
            TRACK_POSITION,ANGLE_TO_TRACK_AXIS,TRACK_EDGE_0,TRACK_EDGE_1,\
            TRACK_EDGE_2,TRACK_EDGE_3,TRACK_EDGE_4,TRACK_EDGE_5,TRACK_EDGE_6,\
            TRACK_EDGE_7,TRACK_EDGE_8,TRACK_EDGE_9,TRACK_EDGE_10,\
            TRACK_EDGE_11,TRACK_EDGE_12,TRACK_EDGE_13,TRACK_EDGE_14,\
            TRACK_EDGE_15,TRACK_EDGE_16,TRACK_EDGE_17,TRACK_EDGE_18")

        self.is_leader = True
        self.helper = StupidDriver(self.record)
        self.standard_driver = Driver()
        self.race_started = False
        self.recovers = 0
        self.recover_mode = False
        self.speeds = []
        self.number = 1
예제 #10
0
    def __init__(self,
                 hostname='localhost',
                 port=3001,
                 *,
                 driver=None,
                 serializer=None,
                 fitnessFile='neat/fitnessFile'):

        self.hostaddr = (hostname, port)
        self.driver = driver or Driver()
        self.serializer = serializer or Serializer()
        self.state = State.STOPPED
        self.socket = None

        self.evaluation = {
            'crashed': False,
            'stuck': False,
            'fitness': 0,
            'time': 0,
            'avgSpeed': 0,
            'position': 0,
            'steering': 0,
            'iteration': 1,
            'lapComplete': False
        }

        self.priorities = {
            'speed': 5,
            'distance': 1,
            'crashPenalty': 0,
            'steeringPenalty': 100,
        }

        self.fitnessFile = fitnessFile

        _logger.debug('Initializing {}.'.format(self))
예제 #11
0
파일: main.py 프로젝트: Gabri95/NEAT_racer
        type=str
    )
    
    parser.add_argument('-v', help='Debug log level.', action='store_true')
    
    #args = parser.parse_args()
    args, _ = parser.parse_known_args()

    # switch log level:
    if args.v:
        level = logging.DEBUG
    else:
        level = logging.INFO
    
    del args.v
    
    logging.basicConfig(
        level=level,
        format="%(asctime)s %(levelname)7s %(name)s %(message)s"
    )
    
    # start client loop:
    client = Client(driver=driver, **args.__dict__)
    client.run()
    
    

if __name__ == '__main__':

    main(Driver())
예제 #12
0
파일: run.py 프로젝트: Gabri95/NEAT_racer
                        default='Driver1')

    parser.add_argument('-u',
                        '--unstuck',
                        help='Make the drivers automatically try to unstuck',
                        action='store_true')

    args, _ = parser.parse_known_args()

    print(args.parameters_file)
    print(args.output_file)
    print(args.driver)

    if args.parameters_file is not None:
        driver = registry[args.driver](args.parameters_file,
                                       out_file=args.output_file,
                                       unstuck=args.unstuck)
    else:
        driver = Driver()

    try:
        main(driver)

    except Exception as exc:
        traceback.print_exc()

        if args.parameters_file is not None:
            driver.saveResults()

        raise