diff --git a/selfdrive/car/gm/carcontroller.py b/selfdrive/car/gm/carcontroller.py index 727c05efdd..c3f4be0a0e 100644 --- a/selfdrive/car/gm/carcontroller.py +++ b/selfdrive/car/gm/carcontroller.py @@ -5,7 +5,7 @@ from common.realtime import DT_CTRL from opendbc.can.packer import CANPacker from selfdrive.car import apply_std_steer_torque_limits from selfdrive.car.gm import gmcan -from selfdrive.car.gm.values import DBC, CanBus, CarControllerParams +from selfdrive.car.gm.values import DBC, CanBus, CarControllerParams, EV_CAR VisualAlert = car.CarControl.HUDControl.VisualAlert NetworkLocation = car.CarParams.NetworkLocation @@ -68,8 +68,13 @@ class CarController: self.apply_gas = self.params.MAX_ACC_REGEN self.apply_brake = 0 else: - self.apply_gas = int(round(interp(actuators.accel, self.params.GAS_LOOKUP_BP, self.params.GAS_LOOKUP_V))) - self.apply_brake = int(round(interp(actuators.accel, self.params.BRAKE_LOOKUP_BP, self.params.BRAKE_LOOKUP_V))) + if self.CP.carFingerprint in EV_CAR: + self.apply_gas = int(round(interp(actuators.accel, self.params.EV_GAS_LOOKUP_BP, self.params.EV_GAS_LOOKUP_V))) + self.apply_brake = int(round(interp(actuators.accel, self.params.EV_BRAKE_LOOKUP_BP, self.params.EV_BRAKE_LOOKUP_V))) + + else: + self.apply_gas = int(round(interp(actuators.accel, self.params.GAS_LOOKUP_BP, self.params.GAS_LOOKUP_V))) + self.apply_brake = int(round(interp(actuators.accel, self.params.BRAKE_LOOKUP_BP, self.params.BRAKE_LOOKUP_V))) idx = (self.frame // 4) % 4 diff --git a/selfdrive/car/gm/values.py b/selfdrive/car/gm/values.py index 1cae6aa506..44021e8d14 100644 --- a/selfdrive/car/gm/values.py +++ b/selfdrive/car/gm/values.py @@ -38,15 +38,20 @@ class CarControllerParams: # -3.5 m/s^2 as per planner limits ACCEL_MAX = 2. # m/s^2 ACCEL_MIN = -4. # m/s^2 + EV_GAS_BRAKE_THRESHOLD_ACCEL = -1.1 + ICE_GAS_BRAKE_THRESHOLD_ACCEL = -0.1 # much less engine braking force compared to regen in an EV - GAS_LOOKUP_BP = [-1., 0., ACCEL_MAX] + GAS_LOOKUP_BP = [ICE_GAS_BRAKE_THRESHOLD_ACCEL, 0., ACCEL_MAX] GAS_LOOKUP_V = [MAX_ACC_REGEN, ZERO_GAS, MAX_GAS] - BRAKE_LOOKUP_BP = [ACCEL_MIN, -1.] + BRAKE_LOOKUP_BP = [ACCEL_MIN, ICE_GAS_BRAKE_THRESHOLD_ACCEL] BRAKE_LOOKUP_V = [MAX_BRAKE, 0.] + + EV_GAS_LOOKUP_BP = [EV_GAS_BRAKE_THRESHOLD_ACCEL, 0., ACCEL_MAX] + EV_GAS_LOOKUP_V = [MAX_ACC_REGEN, ZERO_GAS, MAX_GAS] + EV_BRAKE_LOOKUP_BP = [ACCEL_MIN, EV_GAS_BRAKE_THRESHOLD_ACCEL] + EV_BRAKE_LOOKUP_V = [MAX_BRAKE, 0.] STEER_THRESHOLD = 1.0 - - class CAR: HOLDEN_ASTRA = "HOLDEN ASTRA RS-V BK 2017" VOLT = "CHEVROLET VOLT PREMIER 2017" @@ -56,6 +61,7 @@ class CAR: BUICK_REGAL = "BUICK REGAL ESSENCE 2018" ESCALADE_ESV = "CADILLAC ESCALADE ESV 2016" +EV_CAR = {CAR.VOLT} class Footnote(Enum): OBD_II = CarFootnote(