def run(): # 初始化设置选项 ai_settings = Settings() func.clean_img(ai_settings) # 初始化小车 car = Car(ai_settings) # 初始化深度学习模型 dlmodel = DLmodel(ai_settings) # 初始化算法控制系统 algo = AlgoControl(ai_settings, car) # 创建一个状态类, 用以储存标志物状态 markstats = MarkStatus() # 开始任务的主循环 while True: func.get_image(ai_settings, car, dlmodel) algo.angle_prep = func.predict_angle(ai_settings, dlmodel) car.angle = ai_settings.angle_formula(algo.angle_prep) func.get_label_para(ai_settings, dlmodel, markstats) func.algorithmal_control(ai_settings, car, markstats, algo)
def init_kinematic_cars(self): for position, car_index in zip(self.positions_list, range(1, self.cars_nr + 1)): car_tag = "car_" + str(car_index) car_image_path = self.current_dir + '/resources/cars/' + car_tag + '.png' car_image = pygame.image.load(car_image_path).convert_alpha() car_image = pygame.transform.scale(car_image, (42, 20)) car = Car(position[0], position[1], car_tag=car_tag, car_image=car_image) car.max_velocity = 10 if len(position) == 3: car.angle = position[2] self.kinematic_cars[car_tag] = car
def init_highway_traffic(self): # define lanes : (40, 4); (37, 3); (34, 2); (31, 1); (43, 5); (46, 6); (49, 7); (52, 8) available_x = np.arange(31, 53, 3) available_y = np.arange(self.traffic_safe_space, self.screen_height, 4 * self.traffic_safe_space + self.car_image.get_width()) available_positions = [] for x in available_x: for y in available_y: position = (x, y) available_positions.append(position) random.shuffle(available_positions) for car_index in range(self.traffic_cars_nr): # generate random position car_position = available_positions[random.randint(0, len(available_positions) - 1)] # remove that position from the available position list available_positions.remove(car_position) # init traffic car and add it to traffic list traffic_car = Car(car_position[0], car_position[1]) traffic_car.angle = -90 traffic_car.include_next_lane_mechanic = True traffic_car.max_velocity = random.randint(10, self.car.max_velocity) self.highway_traffic.append(traffic_car)