diff --git a/selfdrive/car/gm/interface.py b/selfdrive/car/gm/interface.py index 83fa379b8..37b8834a3 100644 --- a/selfdrive/car/gm/interface.py +++ b/selfdrive/car/gm/interface.py @@ -27,10 +27,22 @@ CAM_MSG = 0x320 # AEBCmd ACCELERATOR_POS_MSG = 0xbe NON_LINEAR_TORQUE_PARAMS = { - CAR.CHEVROLET_BOLT_EUV: [1.8, 1.1, 0.27, 0.0], - CAR.CHEVROLET_BOLT_CC: [1.8, 1.1, 0.27, 0.0], - CAR.GMC_ACADIA: [4.78003305, 1.0, 0.3122, 0.05591772], - CAR.CHEVROLET_SILVERADO: [3.29974374, 1.0, 0.25571356, 0.0465122] + CAR.CHEVROLET_BOLT_EUV: { + "left": [1.8, 1.1, 0.27, 0.0], + "right": [1.8, 1.0, 0.225, 0.0], + }, + CAR.CHEVROLET_BOLT_CC: { + "left": [1.8, 1.1, 0.27, 0.0], + "right": [1.8, 1.0, 0.225, 0.0], + }, + CAR.GMC_ACADIA: { + "left": [4.78003305, 1.0, 0.3122, 0.05591772], + "right": [4.78003305, 1.0, 0.3122, 0.05591772], + }, + CAR.CHEVROLET_SILVERADO: { + "left": [3.29974374, 1.0, 0.25571356, 0.0465122], + "right": [3.29974374, 1.0, 0.25571356, 0.0465122], + }, } @@ -60,7 +72,9 @@ class CarInterface(CarInterfaceBase): # This has big effect on the stability about 0 (noise when going straight) non_linear_torque_params = NON_LINEAR_TORQUE_PARAMS.get(self.CP.carFingerprint) assert non_linear_torque_params, "The params are not defined" - a, b, c, d = non_linear_torque_params + # Left is positive + side_key = "left" if lateral_acceleration >= 0 else "right" + a, b, c, d = non_linear_torque_params[side_key] sig_input = a * lateral_acceleration sig = np.sign(sig_input) * (1 / (1 + exp(-fabs(sig_input))) - 0.5) steer_torque = (sig * b) + (lateral_acceleration * c) + d