diff --git a/cereal b/cereal
index 61cee7c2a7..7cbb4f1c8c 160000
--- a/cereal
+++ b/cereal
@@ -1 +1 @@
-Subproject commit 61cee7c2a745685c2e140998d78ad11edca8a9e1
+Subproject commit 7cbb4f1c8cb7cfc798a058c611801442b40feb52
diff --git a/docs/CARS.md b/docs/CARS.md
index 87be32f1d0..7f259012f0 100644
--- a/docs/CARS.md
+++ b/docs/CARS.md
@@ -51,13 +51,7 @@ How We Rate The Cars
|Lexus|ES 2019-21|All|
|
|
|
|
|
|Lexus|ES Hybrid 2019-22|All|
|
|
|
|
|
|Lexus|NX 2020|All|
|
|
|
|
|
-|Lexus|RX 2020-22|All|
|
|
|
|
|
-|Lexus|RX Hybrid 2020-21|All|
|
|
|
|
|
|Lexus|UX Hybrid 2019-21|All|
|
|
|
|
|
-|Toyota|Alphard 2019-20|All|
|
|
|
|
|
-|Toyota|Alphard Hybrid 2021|All|
|
|
|
|
|
-|Toyota|Avalon 2022|All|
|
|
|
|
|
-|Toyota|Avalon Hybrid 2022|All|
|
|
|
|
|
|Toyota|Camry 2021-22|All|
|
[4](#footnotes)|
|
|
|
|Toyota|Camry Hybrid 2021-22|All|
|
|
|
|
|
|Toyota|Corolla 2020-22|All|
|
|
|
|
|
@@ -75,12 +69,7 @@ How We Rate The Cars
|Make|Model|Supported Package|openpilot ACC|Stop and Go|Steer to 0|Steering Torque|Actively Maintained|
|---|---|---|:---:|:---:|:---:|:---:|:---:|
-|Audi|A3 2014-19|ACC + Lane Assist|
|
|
|
|
|
-|Audi|A3 Sportback e-tron 2017-18|ACC + Lane Assist|
|
|
|
|
|
|Audi|Q2 2018|ACC + Lane Assist|
|
|
|
|
|
-|Audi|Q3 2020-21|ACC + Lane Assist|
|
|
|
|
|
-|Audi|RS3 2018|ACC + Lane Assist|
|
|
|
|
|
-|Audi|S3 2015-17|ACC + Lane Assist|
|
|
|
|
|
|Genesis|G70 2018|All|
|
|
|
|
|
|Genesis|G80 2018|All|
|
|
|
|
|
|Hyundai|Elantra 2021-22|SCC + LKAS|
|
|
|
|
|
@@ -94,7 +83,6 @@ How We Rate The Cars
|Hyundai|Santa Fe 2021-22|All|
|
|
|
|
|
|Hyundai|Santa Fe Hybrid 2022|All|
|
|
|
|
|
|Hyundai|Santa Fe Plug-in Hybrid 2022|All|
|
|
|
|
|
-|Hyundai|Sonata 2018-19|SCC + LKAS|
|
|
|
|
|
|Hyundai|Tucson Diesel 2019|SCC + LKAS|
|
|
|
|
|
|Kia|Ceed 2019|SCC + LKAS|
|
|
|
|
|
|Kia|Forte 2018|SCC + LKAS|
|
|
|
|
|
@@ -107,18 +95,15 @@ How We Rate The Cars
|Kia|Sorento 2018|SCC + LKAS|
|
|
|
|
|
|Kia|Sorento 2019|SCC + LKAS|
|
|
|
|
|
|Kia|Stinger 2018|SCC + LKAS|
|
|
|
|
|
-|Lexus|CT Hybrid 2017-18|LSS|
[3](#footnotes)|
|
|
|
|
|Lexus|ES Hybrid 2017-18|LSS|
[3](#footnotes)|
|
|
|
|
|Lexus|NX 2018-19|All|
[3](#footnotes)|
|
|
|
|
|Lexus|NX Hybrid 2018-19|All|
[3](#footnotes)|
|
|
|
|
-|Lexus|RX 2016-18|All|
[3](#footnotes)|
|
|
|
|
-|Lexus|RX Hybrid 2016-19|All|
[3](#footnotes)|
|
|
|
|
+|Lexus|RX 2020-22|All|
|
|
|
|
|
+|Lexus|RX Hybrid 2020-21|All|
|
|
|
|
|
|Mazda|CX-5 2022|All|
|
|
|
|
|
|SEAT|Ateca 2018|Driver Assistance|
|
|
|
|
|
|SEAT|Leon 2014-20|Driver Assistance|
|
|
|
|
|
-|Subaru|Crosstrek 2018-19|EyeSight|
|
|
|
|
|
|Subaru|Forester 2019-21|EyeSight|
|
|
|
|
|
-|Subaru|Impreza 2017-19|EyeSight|
|
|
|
|
|
|Škoda|Kamiq 2021[6](#footnotes)|Driver Assistance|
|
|
|
|
|
|Škoda|Karoq 2019|Driver Assistance|
|
|
|
|
|
|Škoda|Kodiaq 2018-19|Driver Assistance|
|
|
|
|
|
@@ -126,36 +111,20 @@ How We Rate The Cars
|Škoda|Octavia RS 2016|Driver Assistance|
|
|
|
|
|
|Škoda|Scala 2020|Driver Assistance|
|
|
|
|
|
|Škoda|Superb 2015-18|Driver Assistance|
|
|
|
|
|
-|Toyota|Avalon 2019-21|TSS-P|
[3](#footnotes)|
|
|
|
|
-|Toyota|Avalon Hybrid 2019-21|TSS-P|
[3](#footnotes)|
|
|
|
|
-|Toyota|C-HR 2017-21|All|
|
|
|
|
|
-|Toyota|C-HR Hybrid 2017-19|All|
|
|
|
|
|
+|Toyota|Alphard 2019-20|All|
|
|
|
|
|
+|Toyota|Alphard Hybrid 2021|All|
|
|
|
|
|
+|Toyota|Avalon 2022|All|
|
|
|
|
|
+|Toyota|Avalon Hybrid 2022|All|
|
|
|
|
|
|Toyota|Camry 2018-20|All|
|
[4](#footnotes)|
|
|
|
|Toyota|Camry Hybrid 2018-20|All|
|
[4](#footnotes)|
|
|
|
-|Toyota|Highlander 2017-19|All|
[3](#footnotes)|
|
|
|
|
-|Toyota|Highlander Hybrid 2017-19|All|
[3](#footnotes)|
|
|
|
|
|Toyota|RAV4 2022|All|
|
|
|
|
|
-|Toyota|RAV4 Hybrid 2016-18|TSS-P|
[3](#footnotes)|
|
|
|
|
|Toyota|RAV4 Hybrid 2022|All|
|
|
|
|
|
-|Toyota|Sienna 2018-20|All|
[3](#footnotes)|
|
|
|
|
|Volkswagen|Arteon 2018, 2021[8](#footnotes)|Driver Assistance|
|
|
|
|
|
-|Volkswagen|Atlas 2018-19, 2022[8](#footnotes)|Driver Assistance|
|
|
|
|
|
-|Volkswagen|e-Golf 2014, 2018-20|Driver Assistance|
|
|
|
|
|
-|Volkswagen|Golf 2015-20|Driver Assistance|
|
|
|
|
|
-|Volkswagen|Golf Alltrack 2017-18|Driver Assistance|
|
|
|
|
|
-|Volkswagen|Golf GTE 2016|Driver Assistance|
|
|
|
|
|
-|Volkswagen|Golf GTI 2018-21|Driver Assistance|
|
|
|
|
|
-|Volkswagen|Golf R 2016-19|Driver Assistance|
|
|
|
|
|
-|Volkswagen|Golf SportsVan 2016|Driver Assistance|
|
|
|
|
|
-|Volkswagen|Golf SportWagen 2015|Driver Assistance|
|
|
|
|
|
-|Volkswagen|Jetta 2018-21|Driver Assistance|
|
|
|
|
|
-|Volkswagen|Jetta GLI 2021|Driver Assistance|
|
|
|
|
|
|Volkswagen|Passat 2015-18[7](#footnotes)|Driver Assistance|
|
|
|
|
|
|Volkswagen|Polo 2020|Driver Assistance|
|
|
|
|
|
|Volkswagen|T-Cross 2021[8](#footnotes)|Driver Assistance|
|
|
|
|
|
|Volkswagen|T-Roc 2021[8](#footnotes)|Driver Assistance|
|
|
|
|
|
|Volkswagen|Taos 2022[8](#footnotes)|Driver Assistance|
|
|
|
|
|
-|Volkswagen|Tiguan 2019-22[8](#footnotes)|Driver Assistance|
|
|
|
|
|
|Volkswagen|Touran 2017|Driver Assistance|
|
|
|
|
|
## Bronze Cars
@@ -165,6 +134,11 @@ How We Rate The Cars
|Acura|ILX 2016-19|AcuraWatch Plus|
|
|
|
|
|
|Acura|RDX 2016-18|AcuraWatch Plus|
|
|
|
|
|
|Acura|RDX 2019-21|All|
|
|
|
|
|
+|Audi|A3 2014-19|ACC + Lane Assist|
|
|
|
|
|
+|Audi|A3 Sportback e-tron 2017-18|ACC + Lane Assist|
|
|
|
|
|
+|Audi|Q3 2020-21|ACC + Lane Assist|
|
|
|
|
|
+|Audi|RS3 2018|ACC + Lane Assist|
|
|
|
|
|
+|Audi|S3 2015-17|ACC + Lane Assist|
|
|
|
|
|
|Cadillac|Escalade ESV 2016[1](#footnotes)|ACC + LKAS|
|
|
|
|
|
|Chevrolet|Volt 2017-18[1](#footnotes)|Adaptive Cruise|
|
|
|
|
|
|Chrysler|Pacifica 2017-18|Adaptive Cruise|
|
|
|
|
|
@@ -196,29 +170,55 @@ How We Rate The Cars
|Hyundai|Ioniq Electric 2019|SCC + LKAS|
|
|
|
|
|
|Hyundai|Ioniq Hybrid 2017-19|SCC + LKAS|
|
|
|
|
|
|Hyundai|Ioniq Plug-in Hybrid 2019|SCC + LKAS|
|
|
|
|
|
+|Hyundai|Sonata 2018-19|SCC + LKAS|
|
|
|
|
|
|Hyundai|Veloster 2019-20|SCC + LKAS|
|
|
|
|
|
|Jeep|Grand Cherokee 2016-18|Adaptive Cruise|
|
|
|
|
|
|Jeep|Grand Cherokee 2019-20|Adaptive Cruise|
|
|
|
|
|
|Kia|Niro Plug-in Hybrid 2019|SCC + LKAS|
|
|
|
|
|
|Kia|Optima 2017|SCC + LKAS|
|
|
|
|
|
-|Lexus|IS 2017-19|All|
|
|
|
|
|
-|Lexus|RC 2020|All|
|
|
|
|
|
+|Lexus|CT Hybrid 2017-18|LSS|
[3](#footnotes)|
|
|
|
|
+|Lexus|IS 2017-19|All|
|
|
|
|
|
+|Lexus|RC 2020|All|
|
|
|
|
|
+|Lexus|RX 2016-18|All|
[3](#footnotes)|
|
|
|
|
+|Lexus|RX Hybrid 2016-19|All|
[3](#footnotes)|
|
|
|
|
|Mazda|CX-9 2021|All|
|
|
|
|
|
|Nissan|Altima 2019-20|ProPILOT|
|
|
|
|
|
|Nissan|Leaf 2018-22|ProPILOT|
|
|
|
|
|
|Nissan|Rogue 2018-20|ProPILOT|
|
|
|
|
|
|Nissan|X-Trail 2017|ProPILOT|
|
|
|
|
|
|Subaru|Ascent 2019-20|EyeSight|
|
|
|
|
|
+|Subaru|Crosstrek 2018-19|EyeSight|
|
|
|
|
|
|Subaru|Crosstrek 2020-21|EyeSight|
|
|
|
|
|
+|Subaru|Impreza 2017-19|EyeSight|
|
|
|
|
|
|Subaru|Impreza 2020-21|EyeSight|
|
|
|
|
|
-|Toyota|Avalon 2016-18|TSS-P|
[3](#footnotes)|
|
|
|
|
+|Toyota|Avalon 2016-18|TSS-P|
[3](#footnotes)|
|
|
|
|
+|Toyota|Avalon 2019-21|TSS-P|
[3](#footnotes)|
|
|
|
|
+|Toyota|Avalon Hybrid 2019-21|TSS-P|
[3](#footnotes)|
|
|
|
|
+|Toyota|C-HR 2017-21|All|
|
|
|
|
|
+|Toyota|C-HR Hybrid 2017-19|All|
|
|
|
|
|
|Toyota|Corolla 2017-19|All|
[3](#footnotes)|
|
|
|
|
+|Toyota|Highlander 2017-19|All|
[3](#footnotes)|
|
|
|
|
+|Toyota|Highlander Hybrid 2017-19|All|
[3](#footnotes)|
|
|
|
|
|Toyota|Prius 2016-20|TSS-P|
[3](#footnotes)|
|
|
[5](#footnotes)|
|
|Toyota|Prius Prime 2017-20|All|
[3](#footnotes)|
|
|
[5](#footnotes)|
|
|Toyota|Prius v 2017|TSS-P|
[3](#footnotes)|
|
|
[5](#footnotes)|
|
-|Toyota|RAV4 2016-18|TSS-P|
[3](#footnotes)|
|
|
|
|
+|Toyota|RAV4 2016-18|TSS-P|
[3](#footnotes)|
|
|
|
|
+|Toyota|RAV4 Hybrid 2016-18|TSS-P|
[3](#footnotes)|
|
|
|
|
+|Toyota|Sienna 2018-20|All|
[3](#footnotes)|
|
|
|
|
+|Volkswagen|Atlas 2018-19, 2022[8](#footnotes)|Driver Assistance|
|
|
|
|
|
|Volkswagen|California 2021[8](#footnotes)|Driver Assistance|
|
|
|
|
|
|Volkswagen|Caravelle 2020[8](#footnotes)|Driver Assistance|
|
|
|
|
|
+|Volkswagen|e-Golf 2014, 2018-20|Driver Assistance|
|
|
|
|
|
+|Volkswagen|Golf 2015-20|Driver Assistance|
|
|
|
|
|
+|Volkswagen|Golf Alltrack 2017-18|Driver Assistance|
|
|
|
|
|
+|Volkswagen|Golf GTE 2016|Driver Assistance|
|
|
|
|
|
+|Volkswagen|Golf GTI 2018-21|Driver Assistance|
|
|
|
|
|
+|Volkswagen|Golf R 2016-19|Driver Assistance|
|
|
|
|
|
+|Volkswagen|Golf SportsVan 2016|Driver Assistance|
|
|
|
|
|
+|Volkswagen|Golf SportWagen 2015|Driver Assistance|
|
|
|
|
|
+|Volkswagen|Jetta 2018-21|Driver Assistance|
|
|
|
|
|
+|Volkswagen|Jetta GLI 2021|Driver Assistance|
|
|
|
|
|
+|Volkswagen|Tiguan 2019-22[8](#footnotes)|Driver Assistance|
|
|
|
|
|
diff --git a/selfdrive/car/body/interface.py b/selfdrive/car/body/interface.py
index 2b44200397..3d6bd5e22a 100644
--- a/selfdrive/car/body/interface.py
+++ b/selfdrive/car/body/interface.py
@@ -17,6 +17,7 @@ class CarInterface(CarInterfaceBase):
ret.safetyConfigs = [get_safety_config(car.CarParams.SafetyModel.body)]
ret.minSteerSpeed = -math.inf
+ ret.maxLateralAccel = math.inf # TODO: set to a reasonable value
ret.steerRatio = 0.5
ret.steerRateCost = 0.5
ret.steerLimitTimer = 1.0
diff --git a/selfdrive/car/body/values.py b/selfdrive/car/body/values.py
index a009b40bc9..0caf93b619 100644
--- a/selfdrive/car/body/values.py
+++ b/selfdrive/car/body/values.py
@@ -18,7 +18,7 @@ class CAR:
BODY = "COMMA BODY"
CAR_INFO: Dict[str, CarInfo] = {
- CAR.BODY: CarInfo("comma body", package="All", good_torque=True, harness=Harness.none),
+ CAR.BODY: CarInfo("comma body", package="All", harness=Harness.none),
}
FW_VERSIONS = {
diff --git a/selfdrive/car/chrysler/interface.py b/selfdrive/car/chrysler/interface.py
index 55672dd4ab..e47b085533 100755
--- a/selfdrive/car/chrysler/interface.py
+++ b/selfdrive/car/chrysler/interface.py
@@ -23,6 +23,14 @@ class CarInterface(CarInterfaceBase):
ret.steerRateCost = 0.7
ret.steerLimitTimer = 0.4
+ # set max lateral acceleration
+ if candidate in (CAR.PACIFICA_2018, CAR.PACIFICA_2019_HYBRID, CAR.JEEP_CHEROKEE, CAR.JEEP_CHEROKEE_2019):
+ ret.maxLateralAccel = 1.6
+ if candidate in (CAR.PACIFICA_2018_HYBRID,):
+ ret.maxLateralAccel = 1.4
+ if candidate in (CAR.PACIFICA_2017_HYBRID,):
+ ret.maxLateralAccel = 1.2
+
if candidate in (CAR.JEEP_CHEROKEE, CAR.JEEP_CHEROKEE_2019):
ret.wheelbase = 2.91 # in meters
ret.steerRatio = 12.7
diff --git a/selfdrive/car/docs_definitions.py b/selfdrive/car/docs_definitions.py
index 3046f5c9e3..381bcfa7f8 100644
--- a/selfdrive/car/docs_definitions.py
+++ b/selfdrive/car/docs_definitions.py
@@ -1,9 +1,13 @@
+import math
+
from cereal import car
from collections import namedtuple
from dataclasses import dataclass
from enum import Enum
from typing import Dict, List, Optional, Union, no_type_check
+STEERING_TORQUE_THRESHOLD = 2.0 # m/s^2
+
class Tier(Enum):
GOLD = "The best openpilot experience. Great highway driving and beyond."
@@ -66,6 +70,11 @@ class CarInfo:
if self.min_enable_speed is not None:
min_enable_speed = self.min_enable_speed
+ # TODO: remove hardcoded good torque and just use maxLateralAccel
+ good_torque = self.good_torque
+ if not math.isnan(CP.maxLateralAccel):
+ good_torque = CP.maxLateralAccel >= STEERING_TORQUE_THRESHOLD
+
self.car_name = CP.carName
self.make, self.model = self.name.split(' ', 1)
self.row = {
@@ -76,7 +85,7 @@ class CarInfo:
Column.LONGITUDINAL: CP.openpilotLongitudinalControl and not CP.radarOffCan,
Column.FSR_LONGITUDINAL: min_enable_speed <= 0.,
Column.FSR_STEERING: min_steer_speed <= 0.,
- Column.STEERING_TORQUE: self.good_torque,
+ Column.STEERING_TORQUE: good_torque,
Column.MAINTAINED: CP.carFingerprint not in non_tested_cars and self.harness is not Harness.none,
}
diff --git a/selfdrive/car/gm/interface.py b/selfdrive/car/gm/interface.py
index b4265fc0bd..ce14faec5e 100755
--- a/selfdrive/car/gm/interface.py
+++ b/selfdrive/car/gm/interface.py
@@ -75,6 +75,7 @@ class CarInterface(CarInterfaceBase):
tire_stiffness_factor = 0.469 # Stock Michelin Energy Saver A/S, LiveParameters
ret.steerRatioRear = 0.
ret.centerToFront = ret.wheelbase * 0.45 # Volt Gen 1, TODO corner weigh
+ ret.maxLateralAccel = 1.6
ret.lateralTuning.pid.kpBP = [0., 40.]
ret.lateralTuning.pid.kpV = [0., 0.17]
@@ -108,6 +109,7 @@ class CarInterface(CarInterfaceBase):
ret.steerRatio = 14.4 # end to end is 13.46
ret.steerRatioRear = 0.
ret.centerToFront = ret.wheelbase * 0.4
+ ret.maxLateralAccel = 1.4
ret.lateralTuning.pid.kf = 1. # get_steer_feedforward_acadia()
elif candidate == CAR.BUICK_REGAL:
diff --git a/selfdrive/car/honda/interface.py b/selfdrive/car/honda/interface.py
index 84437b4f40..ad98f8863f 100755
--- a/selfdrive/car/honda/interface.py
+++ b/selfdrive/car/honda/interface.py
@@ -100,6 +100,7 @@ class CarInterface(CarInterfaceBase):
ret.lateralParams.torqueBP, ret.lateralParams.torqueV = [[0, 2560, 8000], [0, 2560, 3840]]
ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.3], [0.1]]
else:
+ ret.maxLateralAccel = 1.7
ret.lateralParams.torqueBP, ret.lateralParams.torqueV = [[0, 2560], [0, 2560]]
ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[1.1], [0.33]]
tire_stiffness_factor = 1.
@@ -112,6 +113,7 @@ class CarInterface(CarInterfaceBase):
ret.steerRatio = 15.38 # 10.93 is end-to-end spec
ret.lateralParams.torqueBP, ret.lateralParams.torqueV = [[0, 4096], [0, 4096]] # TODO: determine if there is a dead zone at the top end
tire_stiffness_factor = 1.
+ ret.maxLateralAccel = 1.6
ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.8], [0.24]]
elif candidate in (CAR.ACCORD, CAR.ACCORDH):
@@ -126,6 +128,7 @@ class CarInterface(CarInterfaceBase):
if eps_modified:
ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.3], [0.09]]
else:
+ ret.maxLateralAccel = 1.6
ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.6], [0.18]]
elif candidate == CAR.ACURA_ILX:
@@ -162,6 +165,7 @@ class CarInterface(CarInterfaceBase):
ret.lateralParams.torqueBP, ret.lateralParams.torqueV = [[0, 2560, 10000], [0, 2560, 3840]]
ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.21], [0.07]]
else:
+ ret.maxLateralAccel = 1.7
ret.lateralParams.torqueBP, ret.lateralParams.torqueV = [[0, 3840], [0, 3840]]
ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.64], [0.192]]
tire_stiffness_factor = 0.677
@@ -186,6 +190,7 @@ class CarInterface(CarInterfaceBase):
ret.steerRatio = 13.06
ret.lateralParams.torqueBP, ret.lateralParams.torqueV = [[0, 4096], [0, 4096]] # TODO: determine if there is a dead zone at the top end
tire_stiffness_factor = 0.75
+ ret.maxLateralAccel = 1.7
ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.2], [0.05]]
elif candidate == CAR.FREED:
@@ -216,8 +221,9 @@ class CarInterface(CarInterfaceBase):
ret.wheelbase = 2.68
ret.centerToFront = ret.wheelbase * 0.38
ret.steerRatio = 15.0 # as spec
- ret.lateralParams.torqueBP, ret.lateralParams.torqueV = [[0, 1000], [0, 1000]] # TODO: determine if there is a dead zone at the top end
tire_stiffness_factor = 0.444
+ ret.maxLateralAccel = 0.9
+ ret.lateralParams.torqueBP, ret.lateralParams.torqueV = [[0, 1000], [0, 1000]] # TODO: determine if there is a dead zone at the top end
ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.8], [0.24]]
elif candidate == CAR.ACURA_RDX_3G:
@@ -226,6 +232,7 @@ class CarInterface(CarInterfaceBase):
ret.wheelbase = 2.75
ret.centerToFront = ret.wheelbase * 0.41
ret.steerRatio = 11.95 # as spec
+ ret.maxLateralAccel = 1.2
ret.lateralParams.torqueBP, ret.lateralParams.torqueV = [[0, 3840], [0, 3840]]
ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.2], [0.06]]
tire_stiffness_factor = 0.677
@@ -238,6 +245,7 @@ class CarInterface(CarInterfaceBase):
ret.steerRatio = 14.35 # as spec
ret.lateralParams.torqueBP, ret.lateralParams.torqueV = [[0, 4096], [0, 4096]] # TODO: determine if there is a dead zone at the top end
tire_stiffness_factor = 0.82
+ ret.maxLateralAccel = 1.5
ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.28], [0.08]]
elif candidate == CAR.ODYSSEY_CHN:
@@ -258,6 +266,7 @@ class CarInterface(CarInterfaceBase):
ret.steerRatio = 17.25 # as spec
ret.lateralParams.torqueBP, ret.lateralParams.torqueV = [[0, 4096], [0, 4096]] # TODO: determine if there is a dead zone at the top end
tire_stiffness_factor = 0.444
+ ret.maxLateralAccel = 1.5
ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.38], [0.11]]
elif candidate == CAR.RIDGELINE:
@@ -268,6 +277,7 @@ class CarInterface(CarInterfaceBase):
ret.steerRatio = 15.59 # as spec
ret.lateralParams.torqueBP, ret.lateralParams.torqueV = [[0, 4096], [0, 4096]] # TODO: determine if there is a dead zone at the top end
tire_stiffness_factor = 0.444
+ ret.maxLateralAccel = 1.3
ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.38], [0.11]]
elif candidate == CAR.INSIGHT:
@@ -278,6 +288,7 @@ class CarInterface(CarInterfaceBase):
ret.steerRatio = 15.0 # 12.58 is spec end-to-end
ret.lateralParams.torqueBP, ret.lateralParams.torqueV = [[0, 4096], [0, 4096]] # TODO: determine if there is a dead zone at the top end
tire_stiffness_factor = 0.82
+ ret.maxLateralAccel = 1.4
ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.6], [0.18]]
elif candidate == CAR.HONDA_E:
diff --git a/selfdrive/car/hyundai/interface.py b/selfdrive/car/hyundai/interface.py
index 673b304e5a..e051079dc4 100644
--- a/selfdrive/car/hyundai/interface.py
+++ b/selfdrive/car/hyundai/interface.py
@@ -60,6 +60,7 @@ class CarInterface(CarInterfaceBase):
# Values from optimizer
ret.steerRatio = 16.55 # 13.8 is spec end-to-end
tire_stiffness_factor = 0.82
+ ret.maxLateralAccel = 3.2
ret.lateralTuning.pid.kiBP, ret.lateralTuning.pid.kpBP = [[9., 22.], [9., 22.]]
ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.2, 0.35], [0.05, 0.09]]
elif candidate in (CAR.SONATA, CAR.SONATA_HYBRID):
@@ -68,6 +69,7 @@ class CarInterface(CarInterfaceBase):
ret.wheelbase = 2.84
ret.steerRatio = 13.27 * 1.15 # 15% higher at the center seems reasonable
tire_stiffness_factor = 0.65
+ ret.maxLateralAccel = 2.5
ret.lateralTuning.pid.kiBP, ret.lateralTuning.pid.kpBP = [[0.], [0.]]
ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.25], [0.05]]
elif candidate == CAR.SONATA_LF:
@@ -75,6 +77,7 @@ class CarInterface(CarInterfaceBase):
ret.mass = 4497. * CV.LB_TO_KG
ret.wheelbase = 2.804
ret.steerRatio = 13.27 * 1.15 # 15% higher at the center seems reasonable
+ ret.maxLateralAccel = 1.8
ret.lateralTuning.pid.kiBP, ret.lateralTuning.pid.kpBP = [[0.], [0.]]
ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.25], [0.05]]
elif candidate == CAR.PALISADE:
@@ -83,6 +86,7 @@ class CarInterface(CarInterfaceBase):
ret.wheelbase = 2.90
ret.steerRatio = 15.6 * 1.15
tire_stiffness_factor = 0.63
+ ret.maxLateralAccel = 2.5
ret.lateralTuning.pid.kiBP, ret.lateralTuning.pid.kpBP = [[0.], [0.]]
ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.3], [0.05]]
elif candidate in (CAR.ELANTRA, CAR.ELANTRA_GT_I30):
@@ -139,6 +143,7 @@ class CarInterface(CarInterfaceBase):
ret.wheelbase = 2.7
ret.steerRatio = 13.73 # Spec
tire_stiffness_factor = 0.385
+ ret.maxLateralAccel = 3.0
ret.lateralTuning.pid.kiBP, ret.lateralTuning.pid.kpBP = [[0.], [0.]]
ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.25], [0.05]]
if candidate not in (CAR.IONIQ_EV_2020, CAR.IONIQ_PHEV, CAR.IONIQ_HEV_2022):
@@ -188,6 +193,7 @@ class CarInterface(CarInterfaceBase):
ret.wheelbase = 2.7
ret.steerRatio = 13.9 if CAR.KIA_NIRO_HEV_2021 else 13.73 # Spec
tire_stiffness_factor = 0.385
+ ret.maxLateralAccel = 2.9
ret.lateralTuning.pid.kiBP, ret.lateralTuning.pid.kpBP = [[0.], [0.]]
ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.25], [0.05]]
if candidate == CAR.KIA_NIRO_HEV:
@@ -219,6 +225,7 @@ class CarInterface(CarInterfaceBase):
ret.mass = 1825. + STD_CARGO_KG
ret.wheelbase = 2.78
ret.steerRatio = 14.4 * 1.15 # 15% higher at the center seems reasonable
+ ret.maxLateralAccel = 2.4
ret.lateralTuning.pid.kiBP, ret.lateralTuning.pid.kpBP = [[0.], [0.]]
ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.25], [0.05]]
elif candidate == CAR.KIA_FORTE:
@@ -244,6 +251,7 @@ class CarInterface(CarInterfaceBase):
ret.wheelbase = 2.85
ret.steerRatio = 13.27 # 2021 Kia K5 Steering Ratio (all trims)
tire_stiffness_factor = 0.5
+ ret.maxLateralAccel = 2.1
ret.lateralTuning.pid.kiBP, ret.lateralTuning.pid.kpBP = [[0.], [0.]]
ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.25], [0.05]]
elif candidate == CAR.KIA_EV6:
@@ -254,8 +262,8 @@ class CarInterface(CarInterfaceBase):
get_safety_config(car.CarParams.SafetyModel.hyundaiHDA2)]
tire_stiffness_factor = 0.65
- max_lat_accel = 2.
- set_torque_tune(ret.lateralTuning, max_lat_accel, 0.01)
+ ret.maxLateralAccel = 2.
+ set_torque_tune(ret.lateralTuning, ret.maxLateralAccel, 0.01)
# Genesis
elif candidate == CAR.GENESIS_G70:
diff --git a/selfdrive/car/interfaces.py b/selfdrive/car/interfaces.py
index 86da2b0def..a2c11bf023 100644
--- a/selfdrive/car/interfaces.py
+++ b/selfdrive/car/interfaces.py
@@ -81,6 +81,7 @@ class CarInterfaceBase(ABC):
ret.steerControlType = car.CarParams.SteerControlType.torque
ret.minSteerSpeed = 0.
ret.wheelSpeedFactor = 1.0
+ ret.maxLateralAccel = float('nan')
ret.pcmCruise = True # openpilot's state is tied to the PCM's cruise state on most cars
ret.minEnableSpeed = -1. # enable is done by stock ACC, so ignore this
diff --git a/selfdrive/car/subaru/interface.py b/selfdrive/car/subaru/interface.py
index d0d8e91ce1..edd26a4449 100644
--- a/selfdrive/car/subaru/interface.py
+++ b/selfdrive/car/subaru/interface.py
@@ -51,6 +51,7 @@ class CarInterface(CarInterfaceBase):
ret.centerToFront = ret.wheelbase * 0.5
ret.steerRatio = 17 # learned, 14 stock
ret.steerActuatorDelay = 0.1
+ ret.maxLateralAccel = 1.3
ret.lateralTuning.pid.kf = 0.00005
ret.lateralTuning.pid.kiBP, ret.lateralTuning.pid.kpBP = [[0., 14., 23.], [0., 14., 23.]]
ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.045, 0.042, 0.20], [0.04, 0.035, 0.045]]
@@ -61,6 +62,7 @@ class CarInterface(CarInterfaceBase):
ret.centerToFront = ret.wheelbase * 0.5
ret.steerRatio = 17 # learned, 14 stock
ret.steerActuatorDelay = 0.1
+ ret.maxLateralAccel = 3.2
ret.lateralTuning.pid.kf = 0.000038
ret.lateralTuning.pid.kiBP, ret.lateralTuning.pid.kpBP = [[0., 14., 23.], [0., 14., 23.]]
ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.01, 0.065, 0.2], [0.001, 0.015, 0.025]]
diff --git a/selfdrive/car/subaru/values.py b/selfdrive/car/subaru/values.py
index 6e81fcb1b3..412333edcd 100644
--- a/selfdrive/car/subaru/values.py
+++ b/selfdrive/car/subaru/values.py
@@ -43,14 +43,14 @@ class SubaruCarInfo(CarInfo):
CAR_INFO: Dict[str, Union[SubaruCarInfo, List[SubaruCarInfo]]] = {
CAR.ASCENT: SubaruCarInfo("Subaru Ascent 2019-20"),
CAR.IMPREZA: [
- SubaruCarInfo("Subaru Impreza 2017-19", good_torque=True),
- SubaruCarInfo("Subaru Crosstrek 2018-19", video_link="https://youtu.be/Agww7oE1k-s?t=26", good_torque=True),
+ SubaruCarInfo("Subaru Impreza 2017-19"),
+ SubaruCarInfo("Subaru Crosstrek 2018-19", video_link="https://youtu.be/Agww7oE1k-s?t=26"),
],
CAR.IMPREZA_2020: [
SubaruCarInfo("Subaru Impreza 2020-21"),
SubaruCarInfo("Subaru Crosstrek 2020-21"),
],
- CAR.FORESTER: SubaruCarInfo("Subaru Forester 2019-21", good_torque=True),
+ CAR.FORESTER: SubaruCarInfo("Subaru Forester 2019-21"),
CAR.FORESTER_PREGLOBAL: SubaruCarInfo("Subaru Forester 2017-18"),
CAR.LEGACY_PREGLOBAL: SubaruCarInfo("Subaru Legacy 2015-18"),
CAR.OUTBACK_PREGLOBAL: SubaruCarInfo("Subaru Outback 2015-17"),
diff --git a/selfdrive/car/toyota/interface.py b/selfdrive/car/toyota/interface.py
index 1b577cc6b7..a1ce8c4980 100644
--- a/selfdrive/car/toyota/interface.py
+++ b/selfdrive/car/toyota/interface.py
@@ -38,7 +38,8 @@ class CarInterface(CarInterfaceBase):
ret.steerRatio = 15.74 # unknown end-to-end spec
tire_stiffness_factor = 0.6371 # hand-tune
ret.mass = 3045. * CV.LB_TO_KG + STD_CARGO_KG
- set_lat_tune(ret.lateralTuning, LatTunes.TORQUE, MAX_LAT_ACCEL=1.7, FRICTION=0.06)
+ ret.maxLateralAccel = 1.7
+ set_lat_tune(ret.lateralTuning, LatTunes.TORQUE, MAX_LAT_ACCEL=ret.maxLateralAccel, FRICTION=0.06)
elif candidate == CAR.PRIUS_V:
stop_and_go = True
@@ -46,7 +47,8 @@ class CarInterface(CarInterfaceBase):
ret.steerRatio = 17.4
tire_stiffness_factor = 0.5533
ret.mass = 3340. * CV.LB_TO_KG + STD_CARGO_KG
- set_lat_tune(ret.lateralTuning, LatTunes.TORQUE, MAX_LAT_ACCEL=1.8, FRICTION=0.06)
+ ret.maxLateralAccel = 1.8
+ set_lat_tune(ret.lateralTuning, LatTunes.TORQUE, MAX_LAT_ACCEL=ret.maxLateralAccel, FRICTION=0.06)
elif candidate in (CAR.RAV4, CAR.RAV4H):
stop_and_go = True if (candidate in CAR.RAV4H) else False
@@ -54,14 +56,16 @@ class CarInterface(CarInterfaceBase):
ret.steerRatio = 16.88 # 14.5 is spec end-to-end
tire_stiffness_factor = 0.5533
ret.mass = 3650. * CV.LB_TO_KG + STD_CARGO_KG # mean between normal and hybrid
- set_lat_tune(ret.lateralTuning, LatTunes.TORQUE, MAX_LAT_ACCEL=1.8, FRICTION=0.06)
+ ret.maxLateralAccel = 1.8
+ set_lat_tune(ret.lateralTuning, LatTunes.TORQUE, MAX_LAT_ACCEL=ret.maxLateralAccel, FRICTION=0.06)
elif candidate == CAR.COROLLA:
ret.wheelbase = 2.70
ret.steerRatio = 18.27
tire_stiffness_factor = 0.444 # not optimized yet
ret.mass = 2860. * CV.LB_TO_KG + STD_CARGO_KG # mean between normal and hybrid
- set_lat_tune(ret.lateralTuning, LatTunes.TORQUE, MAX_LAT_ACCEL=2.8, FRICTION=0.024)
+ ret.maxLateralAccel = 2.8
+ set_lat_tune(ret.lateralTuning, LatTunes.TORQUE, MAX_LAT_ACCEL=ret.maxLateralAccel, FRICTION=0.024)
elif candidate in (CAR.LEXUS_RX, CAR.LEXUS_RXH, CAR.LEXUS_RX_TSS2, CAR.LEXUS_RXH_TSS2):
stop_and_go = True
@@ -70,6 +74,7 @@ class CarInterface(CarInterfaceBase):
ret.wheelSpeedFactor = 1.035
tire_stiffness_factor = 0.5533
ret.mass = 4481. * CV.LB_TO_KG + STD_CARGO_KG # mean between min and max
+ ret.maxLateralAccel = 1.4
set_lat_tune(ret.lateralTuning, LatTunes.PID_C)
elif candidate in (CAR.CHR, CAR.CHRH):
@@ -78,6 +83,7 @@ class CarInterface(CarInterfaceBase):
ret.steerRatio = 13.6
tire_stiffness_factor = 0.7933
ret.mass = 3300. * CV.LB_TO_KG + STD_CARGO_KG
+ ret.maxLateralAccel = 1.3
set_lat_tune(ret.lateralTuning, LatTunes.PID_F)
elif candidate in (CAR.CAMRY, CAR.CAMRYH, CAR.CAMRY_TSS2, CAR.CAMRYH_TSS2):
@@ -87,8 +93,10 @@ class CarInterface(CarInterfaceBase):
tire_stiffness_factor = 0.7933
ret.mass = 3400. * CV.LB_TO_KG + STD_CARGO_KG # mean between normal and hybrid
if candidate in (CAR.CAMRY_TSS2, CAR.CAMRYH_TSS2):
- set_lat_tune(ret.lateralTuning, LatTunes.TORQUE, MAX_LAT_ACCEL=2.4, FRICTION=0.05)
+ ret.maxLateralAccel = 2.4
+ set_lat_tune(ret.lateralTuning, LatTunes.TORQUE, MAX_LAT_ACCEL=ret.maxLateralAccel, FRICTION=0.05)
else:
+ ret.maxLateralAccel = 2.0
set_lat_tune(ret.lateralTuning, LatTunes.PID_C)
elif candidate in (CAR.HIGHLANDER_TSS2, CAR.HIGHLANDERH_TSS2):
@@ -97,6 +105,7 @@ class CarInterface(CarInterfaceBase):
ret.steerRatio = 16.0
tire_stiffness_factor = 0.8
ret.mass = 4700. * CV.LB_TO_KG + STD_CARGO_KG # 4260 + 4-5 people
+ ret.maxLateralAccel = 2.0
set_lat_tune(ret.lateralTuning, LatTunes.PID_G)
elif candidate in (CAR.HIGHLANDER, CAR.HIGHLANDERH):
@@ -105,6 +114,7 @@ class CarInterface(CarInterfaceBase):
ret.steerRatio = 16.0
tire_stiffness_factor = 0.8
ret.mass = 4607. * CV.LB_TO_KG + STD_CARGO_KG # mean between normal and hybrid limited
+ ret.maxLateralAccel = 1.8
set_lat_tune(ret.lateralTuning, LatTunes.PID_G)
elif candidate in (CAR.AVALON, CAR.AVALON_2019, CAR.AVALONH_2019, CAR.AVALON_TSS2, CAR.AVALONH_TSS2):
@@ -115,6 +125,7 @@ class CarInterface(CarInterfaceBase):
ret.steerRatio = 14.8 # Found at https://pressroom.toyota.com/releases/2016+avalon+product+specs.download
tire_stiffness_factor = 0.7983
ret.mass = 3505. * CV.LB_TO_KG + STD_CARGO_KG # mean between normal and hybrid
+ ret.maxLateralAccel = 1.6
set_lat_tune(ret.lateralTuning, LatTunes.PID_H)
elif candidate in (CAR.RAV4_TSS2, CAR.RAV4_TSS2_2022, CAR.RAV4H_TSS2, CAR.RAV4H_TSS2_2022):
@@ -123,6 +134,7 @@ class CarInterface(CarInterfaceBase):
ret.steerRatio = 14.3
tire_stiffness_factor = 0.7933
ret.mass = 3585. * CV.LB_TO_KG + STD_CARGO_KG # Average between ICE and Hybrid
+ ret.maxLateralAccel = 2.5
set_lat_tune(ret.lateralTuning, LatTunes.PID_D)
# 2019+ RAV4 TSS2 uses two different steering racks and specific tuning seems to be necessary.
@@ -138,7 +150,8 @@ class CarInterface(CarInterfaceBase):
ret.steerRatio = 13.9
tire_stiffness_factor = 0.444 # not optimized yet
ret.mass = 3060. * CV.LB_TO_KG + STD_CARGO_KG
- set_lat_tune(ret.lateralTuning, LatTunes.TORQUE, MAX_LAT_ACCEL=2.0, FRICTION=0.07)
+ ret.maxLateralAccel = 2.0
+ set_lat_tune(ret.lateralTuning, LatTunes.TORQUE, MAX_LAT_ACCEL=ret.maxLateralAccel, FRICTION=0.07)
elif candidate in (CAR.LEXUS_ES_TSS2, CAR.LEXUS_ESH_TSS2, CAR.LEXUS_ESH):
stop_and_go = True
@@ -146,6 +159,7 @@ class CarInterface(CarInterfaceBase):
ret.steerRatio = 16.0 # not optimized
tire_stiffness_factor = 0.444 # not optimized yet
ret.mass = 3677. * CV.LB_TO_KG + STD_CARGO_KG # mean between min and max
+ ret.maxLateralAccel = 2.2
set_lat_tune(ret.lateralTuning, LatTunes.PID_D)
elif candidate == CAR.SIENNA:
@@ -154,6 +168,7 @@ class CarInterface(CarInterfaceBase):
ret.steerRatio = 15.5
tire_stiffness_factor = 0.444
ret.mass = 4590. * CV.LB_TO_KG + STD_CARGO_KG
+ ret.maxLateralAccel = 1.6
set_lat_tune(ret.lateralTuning, LatTunes.PID_J)
elif candidate in (CAR.LEXUS_IS, CAR.LEXUS_RC):
@@ -177,6 +192,7 @@ class CarInterface(CarInterfaceBase):
ret.steerRatio = 14.7
tire_stiffness_factor = 0.444 # not optimized yet
ret.mass = 4070 * CV.LB_TO_KG + STD_CARGO_KG
+ ret.maxLateralAccel = 2.0
set_lat_tune(ret.lateralTuning, LatTunes.PID_C)
elif candidate == CAR.PRIUS_TSS2:
@@ -185,6 +201,7 @@ class CarInterface(CarInterfaceBase):
ret.steerRatio = 13.4 # True steerRatio from older prius
tire_stiffness_factor = 0.6371 # hand-tune
ret.mass = 3115. * CV.LB_TO_KG + STD_CARGO_KG
+ ret.maxLateralAccel = 2.0
set_lat_tune(ret.lateralTuning, LatTunes.PID_N)
elif candidate == CAR.MIRAI:
@@ -193,6 +210,7 @@ class CarInterface(CarInterfaceBase):
ret.steerRatio = 14.8
tire_stiffness_factor = 0.8
ret.mass = 4300. * CV.LB_TO_KG + STD_CARGO_KG
+ ret.maxLateralAccel = 2.4
set_lat_tune(ret.lateralTuning, LatTunes.PID_C)
elif candidate in (CAR.ALPHARD_TSS2, CAR.ALPHARDH_TSS2):
diff --git a/selfdrive/car/toyota/tunes.py b/selfdrive/car/toyota/tunes.py
index 811b3a6e1b..e97ed6b056 100644
--- a/selfdrive/car/toyota/tunes.py
+++ b/selfdrive/car/toyota/tunes.py
@@ -50,7 +50,7 @@ def set_long_tune(tune, name):
###### LAT ######
-def set_lat_tune(tune, name, MAX_LAT_ACCEL=2.5, FRICTION=.1, use_steering_angle=True):
+def set_lat_tune(tune, name, MAX_LAT_ACCEL=2.5, FRICTION=0.01, use_steering_angle=True):
if name == LatTunes.TORQUE:
set_torque_tune(tune, MAX_LAT_ACCEL, FRICTION)
elif 'PID' in str(name):
diff --git a/selfdrive/car/toyota/values.py b/selfdrive/car/toyota/values.py
index 0b6948cf44..3204d36b5a 100644
--- a/selfdrive/car/toyota/values.py
+++ b/selfdrive/car/toyota/values.py
@@ -100,7 +100,6 @@ class Footnote(Enum):
@dataclass
class ToyotaCarInfo(CarInfo):
package: str = "All"
- good_torque: bool = True
harness: Enum = Harness.toyota
diff --git a/selfdrive/car/volkswagen/interface.py b/selfdrive/car/volkswagen/interface.py
index 3a0d7c8ce8..90bbd6d889 100644
--- a/selfdrive/car/volkswagen/interface.py
+++ b/selfdrive/car/volkswagen/interface.py
@@ -64,14 +64,17 @@ class CarInterface(CarInterfaceBase):
elif candidate == CAR.ATLAS_MK1:
ret.mass = 2011 + STD_CARGO_KG
ret.wheelbase = 2.98
+ ret.maxLateralAccel = 1.4
elif candidate == CAR.GOLF_MK7:
ret.mass = 1397 + STD_CARGO_KG
ret.wheelbase = 2.62
+ ret.maxLateralAccel = 1.5
elif candidate == CAR.JETTA_MK7:
ret.mass = 1328 + STD_CARGO_KG
ret.wheelbase = 2.71
+ ret.maxLateralAccel = 1.2
elif candidate == CAR.PASSAT_MK8:
ret.mass = 1551 + STD_CARGO_KG
@@ -92,6 +95,7 @@ class CarInterface(CarInterfaceBase):
elif candidate == CAR.TIGUAN_MK2:
ret.mass = 1715 + STD_CARGO_KG
ret.wheelbase = 2.74
+ ret.maxLateralAccel = 1.1
elif candidate == CAR.TOURAN_MK2:
ret.mass = 1516 + STD_CARGO_KG
@@ -109,6 +113,7 @@ class CarInterface(CarInterfaceBase):
elif candidate == CAR.AUDI_A3_MK3:
ret.mass = 1335 + STD_CARGO_KG
ret.wheelbase = 2.61
+ ret.maxLateralAccel = 1.7
elif candidate == CAR.AUDI_Q2_MK1:
ret.mass = 1205 + STD_CARGO_KG
@@ -117,6 +122,7 @@ class CarInterface(CarInterfaceBase):
elif candidate == CAR.AUDI_Q3_MK2:
ret.mass = 1623 + STD_CARGO_KG
ret.wheelbase = 2.68
+ ret.maxLateralAccel = 1.6
elif candidate == CAR.SEAT_ATECA_MK1:
ret.mass = 1900 + STD_CARGO_KG
diff --git a/selfdrive/controls/lib/latcontrol_torque.py b/selfdrive/controls/lib/latcontrol_torque.py
index 820862af9e..8b41dbf402 100644
--- a/selfdrive/controls/lib/latcontrol_torque.py
+++ b/selfdrive/controls/lib/latcontrol_torque.py
@@ -22,7 +22,7 @@ LOW_SPEED_FACTOR = 200
JERK_THRESHOLD = 0.2
-def set_torque_tune(tune, MAX_LAT_ACCEL=2.5, FRICTION=.1):
+def set_torque_tune(tune, MAX_LAT_ACCEL=2.5, FRICTION=0.01):
tune.init('torque')
tune.torque.useSteeringAngle = True
tune.torque.kp = 1.0 / MAX_LAT_ACCEL
diff --git a/selfdrive/test/process_replay/ref_commit b/selfdrive/test/process_replay/ref_commit
index 8d2b68ee44..3a9b1d9479 100644
--- a/selfdrive/test/process_replay/ref_commit
+++ b/selfdrive/test/process_replay/ref_commit
@@ -1 +1 @@
-3636d7168bc67916eb3cb856cce4166c520fdfb0
+0e18bb3317437f2cad6d0a5782a9222eda655d58