diff --git a/panda/board/safety/safety_gm.h b/panda/board/safety/safety_gm.h index c7ae19b7def0c2..7037439297476d 100644 --- a/panda/board/safety/safety_gm.h +++ b/panda/board/safety/safety_gm.h @@ -1,5 +1,5 @@ const SteeringLimits GM_STEERING_LIMITS = { - .max_steer = 300, + .max_steer = 850, .max_rate_up = 10, .max_rate_down = 15, .driver_torque_allowance = 65, diff --git a/selfdrive/car/gm/interface.py b/selfdrive/car/gm/interface.py index e2cfe7d6284f8c..aa99fc01f672a8 100644 --- a/selfdrive/car/gm/interface.py +++ b/selfdrive/car/gm/interface.py @@ -29,8 +29,8 @@ ACCELERATOR_POS_MSG = 0xbe NON_LINEAR_TORQUE_PARAMS = { - CAR.CHEVROLET_BOLT_EUV: [2.6531724862969748, 1.0, 0.1919764879840985, 0.009054123646805178], - CAR.CHEVROLET_BOLT_CC: [2.6531724862969748, 1.0, 0.1919764879840985, 0.009054123646805178], + CAR.CHEVROLET_BOLT_EUV: [1.75, 0.4, 0.13, 0.0], + CAR.CHEVROLET_BOLT_CC: [1.75, 0.4, 0.13, 0.0], CAR.GMC_ACADIA: [4.78003305, 1.0, 0.3122, 0.05591772], CAR.CHEVROLET_SILVERADO: [3.29974374, 1.0, 0.25571356, 0.0465122] } @@ -90,13 +90,7 @@ def torque_from_lateral_accel_neural(self, latcontrol_inputs: LatControlInputs, return float(self.neural_ff_model.predict(inputs)) + friction def torque_from_lateral_accel(self) -> TorqueFromLateralAccelCallbackType: - if self.CP.carFingerprint in (CAR.CHEVROLET_BOLT_EUV, CAR.CHEVROLET_BOLT_CC): - self.neural_ff_model = NanoFFModel(NEURAL_PARAMS_PATH, self.CP.carFingerprint) - return self.torque_from_lateral_accel_neural - elif self.CP.carFingerprint in NON_LINEAR_TORQUE_PARAMS: return self.torque_from_lateral_accel_siglin - else: - return self.torque_from_lateral_accel_linear @staticmethod def _get_params(ret, candidate, fingerprint, car_fw, disable_openpilot_long, experimental_long, docs, params): diff --git a/selfdrive/car/gm/values.py b/selfdrive/car/gm/values.py index 8e7a15b4831918..ab738671b6eaf6 100644 --- a/selfdrive/car/gm/values.py +++ b/selfdrive/car/gm/values.py @@ -13,7 +13,7 @@ class CarControllerParams: - STEER_MAX = 300 # GM limit is 3Nm. Used by carcontroller to generate LKA output + STEER_MAX = 850 # GM limit is 3Nm. Used by carcontroller to generate LKA output STEER_STEP = 3 # Active control frames per command (~33hz) INACTIVE_STEER_STEP = 10 # Inactive control frames per command (10hz) STEER_DELTA_UP = 10 # Delta rates require review due to observed EPS weakness diff --git a/selfdrive/car/torque_data/override.toml b/selfdrive/car/torque_data/override.toml index b37817b4cc6e40..1905d8dec197fa 100644 --- a/selfdrive/car/torque_data/override.toml +++ b/selfdrive/car/torque_data/override.toml @@ -43,7 +43,7 @@ legend = ["LAT_ACCEL_FACTOR", "MAX_LAT_ACCEL_MEASURED", "FRICTION"] "CADILLAC_ESCALADE" = [1.899999976158142, 1.842270016670227, 0.1120000034570694] "CADILLAC_ESCALADE_ESV_2019" = [1.15, 1.3, 0.2] "CADILLAC_XT4" = [1.45, 1.6, 0.2] -"CHEVROLET_BOLT_EUV" = [2.0, 2.0, 0.05] +"CHEVROLET_BOLT_EUV" = [5.67, 2.0, 0.015] "CHEVROLET_MALIBU_CC" = [1.85, 1.85, 0.075] "CHEVROLET_SILVERADO" = [1.9, 1.9, 0.112] "CHEVROLET_TRAILBLAZER" = [1.33, 1.9, 0.16] diff --git a/selfdrive/locationd/torqued.py b/selfdrive/locationd/torqued.py index 7617716dc21309..c198413dc9e88b 100755 --- a/selfdrive/locationd/torqued.py +++ b/selfdrive/locationd/torqued.py @@ -21,7 +21,7 @@ FIT_POINTS_TOTAL_QLOG = 600 MIN_VEL = 15 # m/s FRICTION_FACTOR = 1.5 # ~85% of data coverage -FACTOR_SANITY = 0.3 +FACTOR_SANITY = 1.0 FACTOR_SANITY_QLOG = 0.5 FRICTION_SANITY = 0.5 FRICTION_SANITY_QLOG = 0.8 @@ -34,7 +34,7 @@ MIN_ENGAGE_BUFFER = 2 # secs VERSION = 1 # bump this to invalidate old parameter caches -ALLOWED_CARS = ['toyota', 'hyundai'] +ALLOWED_CARS = ['toyota', 'hyundai', 'gm'] def slope2rot(slope): diff --git a/system/manager/process_config.py b/system/manager/process_config.py index 00433282d41b62..1a7425b73245bb 100644 --- a/system/manager/process_config.py +++ b/system/manager/process_config.py @@ -48,7 +48,7 @@ def allow_logging(started, params, CP: car.CarParams) -> bool: def allow_uploads(started, params, CP: car.CarParams) -> bool: allow_uploads = not (params.get_bool("DeviceManagement") and params.get_bool("NoUploads") and not params.get_bool("DisableOnroadUploads")) - return allow_uploads + return False procs = [ DaemonProcess("manage_athenad", "system.athena.manage_athenad", "AthenadPid"),