def get_car(logcan, sendcan): candidate, fingerprints, vin, car_fw, source = fingerprint(logcan, sendcan) if candidate is None: cloudlog.warning("car doesn't match any fingerprints: %r", fingerprints) candidate = "KIA NIRO HEV 2018" if Params().get("CarModel", encoding="utf8") is not None: car_name = Params().get("CarModel", encoding="utf8") car_name = car_name.rstrip('\n') candidate = car_name CarInterface, CarController, CarState = interfaces[candidate] car_params = CarInterface.get_params(candidate, fingerprints, car_fw) car_params.carVin = vin car_params.carFw = car_fw car_params.fingerprintSource = source return CarInterface(car_params, CarController, CarState), car_params
def lead_control(self, CS, sm, CC): dRel = CC.dRel yRel = CC.yRel vRel = CC.vRel active_time = 10 btn_type = Buttons.NONE #lead_1 = sm['radarState'].leadOne long_wait_cmd = 500 set_speed = int(round(self.cruise_set_speed_kph)) if self.long_curv_timer < 600: self.long_curv_timer += 1 # 선행 차량 거리유지 lead_wait_cmd, lead_set_speed = self.update_lead( sm, CS, dRel, yRel, vRel) # 커브 감속. model_speed = CC.model_speed #cal_model_speed( CS.out.vEgo ) curv_wait_cmd, curv_set_speed = self.update_curv(CS, sm, model_speed) if curv_wait_cmd != 0: if lead_set_speed > curv_set_speed: set_speed = curv_set_speed long_wait_cmd = curv_wait_cmd else: set_speed = lead_set_speed long_wait_cmd = lead_wait_cmd else: set_speed = lead_set_speed long_wait_cmd = lead_wait_cmd if set_speed >= int(round(self.cruise_set_speed_kph)): set_speed = int(round(self.cruise_set_speed_kph)) elif set_speed <= 30: set_speed = 30 # control process target_set_speed = set_speed delta = int(round(set_speed)) - int(CS.VSetDis) dec_step_cmd = 1 camspeed = Params().get("LimitSetSpeedCamera", encoding="utf8") if camspeed is not None: self.map_spd_camera = int(float(camspeed.rstrip('\n'))) self.map_spd_enable = self.map_spd_camera > 29 else: self.map_spd_enable = False self.map_spd_camera = 0 if self.long_curv_timer < long_wait_cmd: pass elif delta > 0: if ((self.map_spd_camera + round(self.map_spd_camera * 0.01 * self.map_spd_limit_offset)) == int(CS.VSetDis)) and self.map_spd_enable: set_speed = int(CS.VSetDis) + 0 btn_type = Buttons.NONE self.long_curv_timer = 0 else: set_speed = int(CS.VSetDis) + dec_step_cmd btn_type = Buttons.RES_ACCEL self.long_curv_timer = 0 elif delta < 0: set_speed = int(CS.VSetDis) - dec_step_cmd btn_type = Buttons.SET_DECEL self.long_curv_timer = 0 if self.cruise_set_mode == 0: btn_type = Buttons.NONE self.update_log(CS, set_speed, target_set_speed, long_wait_cmd) return btn_type, set_speed, active_time