diff --git a/selfdrive/car/gm/values.py b/selfdrive/car/gm/values.py index 15860e6b7e..cb4a68a697 100644 --- a/selfdrive/car/gm/values.py +++ b/selfdrive/car/gm/values.py @@ -5,41 +5,40 @@ from selfdrive.car import dbc_dict Ecu = car.CarParams.Ecu class CarControllerParams(): - def __init__(self): - self.STEER_MAX = 300 - self.STEER_STEP = 2 # how often we update the steer cmd - self.STEER_DELTA_UP = 7 # ~0.75s time to peak torque (255/50hz/0.75s) - self.STEER_DELTA_DOWN = 17 # ~0.3s from peak torque to zero - self.MIN_STEER_SPEED = 3. - self.STEER_DRIVER_ALLOWANCE = 50 # allowed driver torque before start limiting - self.STEER_DRIVER_MULTIPLIER = 4 # weight driver torque heavily - self.STEER_DRIVER_FACTOR = 100 # from dbc - self.NEAR_STOP_BRAKE_PHASE = 0.5 # m/s, more aggressive braking near full stop + STEER_MAX = 300 # Safety limit, not LKA max. Trucks use 600. + STEER_STEP = 2 # control frames per command + STEER_DELTA_UP = 7 + STEER_DELTA_DOWN = 17 + MIN_STEER_SPEED = 3. # m/s + STEER_DRIVER_ALLOWANCE = 50 + STEER_DRIVER_MULTIPLIER = 4 + STEER_DRIVER_FACTOR = 100 + NEAR_STOP_BRAKE_PHASE = 0.5 # m/s - # Takes case of "Service Adaptive Cruise" and "Service Front Camera" - # dashboard messages. - self.ADAS_KEEPALIVE_STEP = 100 - self.CAMERA_KEEPALIVE_STEP = 100 + # Heartbeat for dash "Service Adaptive Cruise" and "Service Front Camera" + ADAS_KEEPALIVE_STEP = 100 + CAMERA_KEEPALIVE_STEP = 100 - # pedal lookups, only for Volt - MAX_GAS = 3072 # Only a safety limit - ZERO_GAS = 2048 - MAX_BRAKE = 350 # Should be around 3.5m/s^2, including regen + # Volt gasbrake lookups + MAX_GAS = 3072 # Safety limit, not ACC max. Stock ACC >4096 from standstill. + ZERO_GAS = 2048 # Coasting + MAX_BRAKE = 350 # ~ -3.5 m/s^2 with regen - self.ACCEL_MAX = 2.0 # m/s^2 + # Allow small margin below -3.5 m/s^2 from ISO 15622:2018 since we + # perform the closed loop control, and might need some + # to apply some more braking if we're on a downhill slope. + # Our controller should still keep the 2 second average above + # -3.5 m/s^2 as per planner limits + ACCEL_MAX = 2. # m/s^2 + ACCEL_MIN = -4. # m/s^2 - # Allow small margin below -3.5 m/s^2 from ISO 15622:2018 since we - # perform the closed loop control, and might need some - # to apply some more braking if we're on a downhill slope. - # Our controller should still keep the 2 second average above - # -3.5 m/s^2 as per planner limits - self.ACCEL_MIN = -4.0 # m/s^2 + MAX_ACC_REGEN = 1404 # Max ACC regen is slightly less than max paddle regen + GAS_LOOKUP_BP = [-1., 0., ACCEL_MAX] + GAS_LOOKUP_V = [MAX_ACC_REGEN, ZERO_GAS, MAX_GAS] + BRAKE_LOOKUP_BP = [ACCEL_MIN, -1.] + BRAKE_LOOKUP_V = [MAX_BRAKE, 0.] - self.MAX_ACC_REGEN = 1404 # ACC Regen braking is slightly less powerful than max regen paddle - self.GAS_LOOKUP_BP = [-1.0, 0., self.ACCEL_MAX] - self.GAS_LOOKUP_V = [self.MAX_ACC_REGEN, ZERO_GAS, MAX_GAS] - self.BRAKE_LOOKUP_BP = [self.ACCEL_MIN, -1.0] - self.BRAKE_LOOKUP_V = [MAX_BRAKE, 0] +STEER_THRESHOLD = 1.0 class CAR: HOLDEN_ASTRA = "HOLDEN ASTRA RS-V BK 2017" @@ -109,8 +108,6 @@ FINGERPRINTS = { }], } -STEER_THRESHOLD = 1.0 - DBC = { CAR.HOLDEN_ASTRA: dbc_dict('gm_global_a_powertrain', 'gm_global_a_object', chassis_dbc='gm_global_a_chassis'), CAR.VOLT: dbc_dict('gm_global_a_powertrain', 'gm_global_a_object', chassis_dbc='gm_global_a_chassis'),