Skip to content
Merged
Show file tree
Hide file tree
Changes from 26 commits
Commits
Show all changes
78 commits
Select commit Hold shift + click to select a range
6328390
Switch to ECMPRDNL2 for GM gear
JMPZ11 Jun 7, 2022
7350e9f
Removing manumatic gear #
JMPZ11 Jun 7, 2022
ad38808
values.py almost complete
JMPZ11 Jun 15, 2022
ddc36f9
Silverado and Bolt EUV val and CP
JMPZ11 Jun 15, 2022
8ec0e23
GM controller updated
JMPZ11 Jun 15, 2022
ffd1c9b
Cam hrns supp done (in theory)
JMPZ11 Jun 16, 2022
fe37111
cleanup for new cars
JMPZ11 Jun 16, 2022
c568b6c
Remove extra constant
JMPZ11 Jun 16, 2022
90394e8
WS, etc cleanup
JMPZ11 Jun 16, 2022
1c22cb9
Merge remote-tracking branch 'upstream/master' into gm-new-gears
JMPZ11 Jun 16, 2022
4c7a5e6
Merge remote-tracking branch 'upstream/master' into gm-silverado-wip
JMPZ11 Jun 16, 2022
e90135f
removing the unused
JMPZ11 Jun 16, 2022
506b801
Merge branch 'gm-new-gears' into gm-silverado-wip
JMPZ11 Jun 16, 2022
8a1da4a
Fix kpBP typo
JMPZ11 Jun 16, 2022
cd98185
Updated docs
JMPZ11 Jun 16, 2022
2c1b33e
Skip's PIF tune
JMPZ11 Jun 17, 2022
5fda20d
Dropped LKA CAN error patch
JMPZ11 Jun 17, 2022
8db1707
Merge remote-tracking branch 'upstream/master' into gm-silverado-wip
JMPZ11 Jun 18, 2022
2115ba6
Add silverado sigmoid ff
JMPZ11 Jun 18, 2022
2bf8cc4
CAN Err & LKA latch patch
JMPZ11 Jun 19, 2022
db39f5e
Merge remote-tracking branch 'upstream/master' into gm-silverado-wip
JMPZ11 Jun 20, 2022
5c95a5b
Merge remote-tracking branch 'upstream/master' into gm-silverado-wip
JMPZ11 Jun 20, 2022
2d85347
Merge remote-tracking branch 'upstream/master' into gm-silverado-wip
JMPZ11 Jun 21, 2022
b9ca4d2
Merge remote-tracking branch 'upstream/master' into gm-silverado-wip
JMPZ11 Jun 21, 2022
472e151
Merge remote-tracking branch 'upstream/master' into gm-silverado-wip
JMPZ11 Jun 27, 2022
fc8ff76
Merge remote-tracking branch 'upstream/master' into gm-silverado-wip
sshane Aug 3, 2022
a11d15c
Merge remote-tracking branch 'upstream/master' into gm-silverado-wip
sshane Aug 8, 2022
e0d4c82
Remove EPS fault fix (another PR)
sshane Aug 8, 2022
df40883
Remove Silverado (another PR)
sshane Aug 8, 2022
34fac56
clean up some common params
sshane Aug 8, 2022
21b76a3
Remove Escalade FP
sshane Aug 8, 2022
27b23bc
comment
sshane Aug 8, 2022
0666db0
Premier is just a trim
sshane Aug 9, 2022
c45bc8c
no footnote: new Bolt is like most other cars, older GM were outliers…
sshane Aug 9, 2022
a437afe
clean up
sshane Aug 9, 2022
e140546
bump panda
sshane Aug 9, 2022
1f8e5ad
bump panda
sshane Aug 9, 2022
9364198
bump panda
sshane Aug 10, 2022
fa0d967
bump panda
sshane Aug 10, 2022
346bd81
bump panda
sshane Aug 10, 2022
53dc101
remove comments
sshane Aug 10, 2022
96e4b39
try spamming buttons on bus 2
sshane Aug 10, 2022
f822cab
bump panda
sshane Aug 10, 2022
6af1f0b
bumping opendbc w btn rc
JMPZ11 Aug 10, 2022
70c1783
not needed for this port
sshane Aug 10, 2022
98f50d8
add button safety
sshane Aug 10, 2022
4e2fe3e
Send next rc when spamming btns
JMPZ11 Aug 10, 2022
44934e2
forward other signals in message
sshane Aug 10, 2022
10eff13
missing DriveModeButton
sshane Aug 10, 2022
66f5d12
fill cruiseState.speed
sshane Aug 10, 2022
6b1e2aa
see if resume works without counter
sshane Aug 10, 2022
d612707
try the whole message
sshane Aug 11, 2022
0d33dad
send immediately and at 10Hz
sshane Aug 11, 2022
3857788
no resume, back to just button signal
sshane Aug 11, 2022
483ad71
even holding random buttons it cancels
sshane Aug 11, 2022
1ceea6d
Use torque controller with base tune
sshane Aug 11, 2022
07f13b9
stock long GM don't auto-resume yet
sshane Aug 11, 2022
e8c5a83
Testing GM zero min steer speed
JMPZ11 Aug 11, 2022
5cd2312
Revert latcontrol
sshane Aug 11, 2022
e5e525b
revert opendbc
sshane Aug 11, 2022
ab9b4f7
latActive is basically lkas_enabled
sshane Aug 11, 2022
d3a07df
Update Bolt torque params
sshane Aug 11, 2022
79c88fe
Merge remote-tracking branch 'upstream/master' into gm-silverado-wip
sshane Aug 11, 2022
d3c724f
comment
sshane Aug 11, 2022
7b54c44
clean up
sshane Aug 11, 2022
3104512
Add to releases
sshane Aug 11, 2022
61816e7
Add test route
sshane Aug 12, 2022
8e9894d
Don't specify segment
sshane Aug 12, 2022
4991f04
Merge remote-tracking branch 'upstream/master' into gm-silverado-wip
sshane Aug 12, 2022
4426084
bump panda
sshane Aug 12, 2022
9190d1c
bump panda
sshane Aug 12, 2022
1615026
no harness for Bolt just yet
sshane Aug 12, 2022
aa1d586
Apply suggestions from code review
sshane Aug 12, 2022
9e881ba
We support all and 2023
sshane Aug 12, 2022
f7b1880
move safetyParam up to first cam check
sshane Aug 12, 2022
b590397
Merge remote-tracking branch 'upstream/master' into gm-silverado-wip
sshane Aug 12, 2022
abe714a
Bump panda and update docs
sshane Aug 12, 2022
aab0111
Update RELEASES.md
sshane Aug 12, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
125 changes: 64 additions & 61 deletions docs/CARS.md

Large diffs are not rendered by default.

8 changes: 8 additions & 0 deletions selfdrive/car/docs_definitions.py
Original file line number Diff line number Diff line change
Expand Up @@ -208,6 +208,14 @@ class Harness(Enum):
hyundai_p = "Hyundai P"
custom = "Developer"
obd_ii = "OBD-II"
gm_cam = "GM Camera"
# TODO: Submit PR for gm cam harness schematic(s), diagrams and board layout(s) to https://github.com/commaai/neo/tree/master/car_harness
# Note: GM cam harness _without low-speed GMLAN support_ is simple and similar to the others
# JJS - I anticipate comma to be able to take over production easily
# It also doesn't make sense for customers to get the Developer harness - they typically don't need the wires
# Note 2: JJS - I anticipate designing a camera harness with a low-speed GMLAN gateway (design borrowed from OBD2 harness),
# unless comma plans to do so
# Note 3: JJS - I anticipate an eventual
nissan_a = "Nissan A"
nissan_b = "Nissan B"
mazda = "Mazda"
Expand Down
24 changes: 19 additions & 5 deletions selfdrive/car/gm/carcontroller.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,9 @@ def __init__(self, dbc_name, CP, VM):
self.apply_brake = 0
self.frame = 0

self.lka_last_rc_val = -1
self.lka_same_rc_cnt = 0

self.lka_steering_cmd_counter_last = -1
self.lka_icon_status_last = (False, False)

Expand All @@ -46,18 +49,26 @@ def update(self, CC, CS):
if CS.lka_steering_cmd_counter != self.lka_steering_cmd_counter_last:
self.lka_steering_cmd_counter_last = CS.lka_steering_cmd_counter
elif (self.frame % self.params.STEER_STEP) == 0:
lkas_enabled = CC.latActive and CS.out.vEgo > self.params.MIN_STEER_SPEED
# GM EPS faults on any gap in received message counters. To handle transient OP/Panda safety sync issues at the
# moment of disengaging, increment the counter based on the last message known to pass Panda safety checks.
idx = (CS.lka_steering_cmd_counter + 1) % 4
# Start counting number of resubmits - this should only happen when the panda drops an LKA frame
# If we reach 3 attempts to send the same frame, it's time to switch to inactive
#
if idx == self.lka_last_rc_val:
self.lka_same_rc_cnt += 1
else:
self.lka_same_rc_cnt = 0
self.lka_last_rc_val = idx

lkas_enabled = CC.latActive and CS.out.vEgo > self.params.MIN_STEER_SPEED and self.lka_same_rc_cnt < 3
if lkas_enabled:
new_steer = int(round(actuators.steer * self.params.STEER_MAX))
apply_steer = apply_std_steer_torque_limits(new_steer, self.apply_steer_last, CS.out.steeringTorque, self.params)
else:
apply_steer = 0

self.apply_steer_last = apply_steer
# GM EPS faults on any gap in received message counters. To handle transient OP/Panda safety sync issues at the
# moment of disengaging, increment the counter based on the last message known to pass Panda safety checks.
idx = (CS.lka_steering_cmd_counter + 1) % 4

can_sends.append(gmcan.create_steering_control(self.packer_pt, CanBus.POWERTRAIN, apply_steer, idx, lkas_enabled))

if self.CP.openpilotLongitudinalControl:
Expand All @@ -77,6 +88,7 @@ def update(self, CC, CS):
near_stop = CC.longActive and (CS.out.vEgo < self.params.NEAR_STOP_BRAKE_PHASE)
# GasRegenCmdActive needs to be 1 to avoid cruise faults. It describes the ACC state, not actuation
can_sends.append(gmcan.create_gas_regen_command(self.packer_pt, CanBus.POWERTRAIN, self.apply_gas, idx, CC.enabled, at_full_stop))
# Vehicles with factory camera-based ACC expect friction brake on PT
can_sends.append(gmcan.create_friction_brake_command(self.packer_ch, CanBus.CHASSIS, self.apply_brake, idx, near_stop, at_full_stop))

# Send dashboard UI commands (ACC status)
Expand Down Expand Up @@ -110,6 +122,8 @@ def update(self, CC, CS):
lka_active = CS.lkas_status == 1
lka_critical = lka_active and abs(actuators.steer) > 0.9
lka_icon_status = (lka_active, lka_critical)

# SW_GMLAN not yet on cam harness
if self.CP.networkLocation != NetworkLocation.fwdCamera and (self.frame % self.params.CAMERA_KEEPALIVE_STEP == 0 or lka_icon_status != self.lka_icon_status_last):
steer_alert = hud_alert in (VisualAlert.steerRequired, VisualAlert.ldw)
can_sends.append(gmcan.create_lka_icon_command(CanBus.SW_GMLAN, lka_active, lka_critical, steer_alert))
Expand Down
1 change: 1 addition & 0 deletions selfdrive/car/gm/carstate.py
Original file line number Diff line number Diff line change
Expand Up @@ -140,6 +140,7 @@ def get_loopback_can_parser(CP):
]

checks = [
# TODO: does this still need to be 0?
("ASCMLKASteeringCmd", 10), # 10 Hz is the stock inactive rate (every 100ms).
# While active 50 Hz (every 20 ms) is normal
# EPS will tolerate around 200ms when active before faulting
Expand Down
75 changes: 71 additions & 4 deletions selfdrive/car/gm/interface.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
#!/usr/bin/env python3
from cereal import car
from math import fabs
from panda import Panda

from common.conversions import Conversions as CV
from selfdrive.car import STD_CARGO_KG, create_button_enable_events, create_button_event, scale_rot_inertia, scale_tire_stiffness, gen_empty_fingerprint, get_safety_config
Expand All @@ -22,6 +23,14 @@ def get_pid_accel_limits(CP, current_speed, cruise_speed):
params = CarControllerParams()
return params.ACCEL_MIN, params.ACCEL_MAX

@staticmethod
def get_steer_feedforward_sigmoid(desired_angle: float, v_ego: float, ANGLE: float, ANGLE_OFFSET: float,
SIGMOID_SPEED: float, SIGMOID: float, SPEED: float) -> float:
# Apply sigmoid feedforward function on desired_angle & v_ego using supplied factors
x = ANGLE * (desired_angle + ANGLE_OFFSET)
sigmoid = x / (1 + fabs(x))
return (SIGMOID_SPEED * sigmoid * v_ego) + (SIGMOID * sigmoid) + (SPEED * v_ego)

# Determined by iteratively plotting and minimizing error for f(angle, speed) = steer.
@staticmethod
def get_steer_feedforward_volt(desired_angle, v_ego):
Expand All @@ -35,11 +44,22 @@ def get_steer_feedforward_acadia(desired_angle, v_ego):
sigmoid = desired_angle / (1 + fabs(desired_angle))
return 0.04689655 * sigmoid * (v_ego + 10.028217)

@staticmethod
def get_steer_feedforward_silverado(desired_angle, v_ego):
ANGLE = 0.06539361463056717
ANGLE_OFFSET = -0.#8390269362439537
SIGMOID_SPEED = 0.023681877712247515
SIGMOID = 0.5709779025308087
SPEED = -0.0016656455765509301
return CarInterface.get_steer_feedforward_sigmoid(desired_angle, v_ego, ANGLE, ANGLE_OFFSET, SIGMOID_SPEED, SIGMOID, SPEED)

def get_steer_feedforward_function(self):
if self.CP.carFingerprint == CAR.VOLT:
return self.get_steer_feedforward_volt
elif self.CP.carFingerprint == CAR.ACADIA:
return self.get_steer_feedforward_acadia
elif self.CP.carFingerprint == CAR.SILVERADO:
return self.get_steer_feedforward_silverado
else:
return CarInterfaceBase.get_steer_feedforward_default

Expand All @@ -49,10 +69,10 @@ def get_params(candidate, fingerprint=gen_empty_fingerprint(), car_fw=None, disa
ret.carName = "gm"
ret.safetyConfigs = [get_safety_config(car.CarParams.SafetyModel.gm)]
ret.pcmCruise = False # For ASCM, stock non-adaptive cruise control is kept off
ret.radarOffCan = False # For ASCM, radar exists
ret.transmissionType = TransmissionType.automatic
ret.radarOffCan = False # For ASCM, radar is present
ret.transmissionType = TransmissionType.automatic # EV is direct
# NetworkLocation.gateway: OBD-II harness (typically ASCM), NetworkLocation.fwdCamera: non-ASCM
ret.networkLocation = NetworkLocation.gateway
ret.networkLocation = NetworkLocation.gateway # or fwdCamera

# These cars have been put into dashcam only due to both a lack of users and test coverage.
# These cars likely still work fine. Once a user confirms each car works and a test route is
Expand All @@ -62,7 +82,7 @@ def get_params(candidate, fingerprint=gen_empty_fingerprint(), car_fw=None, disa
# Presence of a camera on the object bus is ok.
# Have to go to read_only if ASCM is online (ACC-enabled cars),
# or camera is on powertrain bus (LKA cars without ACC).
ret.openpilotLongitudinalControl = True
ret.openpilotLongitudinalControl = True # For ASCM, OP performs long
tire_stiffness_factor = 0.444 # not optimized yet

# Start with a baseline tuning for all GM vehicles. Override tuning as needed in each model section below.
Expand All @@ -82,6 +102,8 @@ def get_params(candidate, fingerprint=gen_empty_fingerprint(), car_fw=None, disa

# supports stop and go, but initial engage must (conservatively) be above 18mph
ret.minEnableSpeed = 18 * CV.MPH_TO_MS
# TODO: Should this be changed to -1?
# Newer cars (that are still ASCM-based) use -1 for minEnableSpeed with the comment "engage speed is decided by pcm"

if candidate == CAR.VOLT:
ret.transmissionType = TransmissionType.direct
Expand Down Expand Up @@ -142,6 +164,51 @@ def get_params(candidate, fingerprint=gen_empty_fingerprint(), car_fw=None, disa
ret.lateralTuning.pid.kf = 0.000045
tire_stiffness_factor = 1.0

elif candidate == CAR.SILVERADO:
ret.minEnableSpeed = -1.
ret.mass = 2400. + STD_CARGO_KG
ret.wheelbase = 3.745
ret.steerRatio = 16.3
ret.centerToFront = ret.wheelbase * .49
ret.networkLocation = NetworkLocation.fwdCamera # Uses Cam Harness
ret.radarOffCan = True # No Radar
ret.openpilotLongitudinalControl = False # Stock ACC
ret.pcmCruise = True # CC is on
# Tune (Thanks Skip)
ret.steerActuatorDelay = 0.11
ret.lateralTuning.pid.kpBP = [11.0, 15.5, 22.0, 31.0]
ret.lateralTuning.pid.kpV = [0.12, 0.14, 0.20, 0.25]
# kf value is based on the use of custom feedforward function
ret.lateralTuning.pid.kf = (0.55 + 0.4) / 2. # Averaging the right and left kf for now
# GM Trucks have weak right turning
# Allowing for kf to be swapped depending on the curvature direction
# seems to be improve the issue
# ret.lateralTuning.pid.kf = 0.55
# ret.lateralTuning.pid.kfLeft = 0.4

elif candidate == CAR.BOLT_EUV:
ret.transmissionType = TransmissionType.direct # EV (or hybrid)
ret.minEnableSpeed = -1
ret.mass = 1669. + STD_CARGO_KG
ret.wheelbase = 2.675
ret.steerRatio = 16.8 # Not measured
ret.centerToFront = ret.wheelbase * 0.4
ret.networkLocation = NetworkLocation.fwdCamera # Uses Cam Harness
ret.radarOffCan = True # No Radar
ret.openpilotLongitudinalControl = False # Stock ACC
ret.pcmCruise = True # CC is on
# Tune
ret.steerActuatorDelay = 0.
ret.lateralTuning.pid.kpBP, ret.lateralTuning.pid.kiBP = [[10., 41.0], [10., 41.0]]
ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.18, 0.275], [0.01, 0.021]]
ret.lateralTuning.pid.kf = 0.0002
tire_stiffness_factor = 1.0

# Set Panda to camera forwarding mode
if ret.networkLocation == NetworkLocation.fwdCamera:
# TODO: Depends on Panda PR #962 (Cam Harness forwarding, stock ACC)
ret.safetyConfigs[0].safetyParam |= Panda.FLAG_GM_HW_CAM

# TODO: get actual value, for now starting with reasonable value for
# civic and scaling by mass and wheelbase
ret.rotationalInertia = scale_rot_inertia(ret.mass, ret.wheelbase)
Expand Down
30 changes: 30 additions & 0 deletions selfdrive/car/gm/values.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,11 @@


class CarControllerParams:
# TODO: Different cars have different min steer speed, usually around 3-5 mph
# TODO: Delta up and down limits may require adjustment based on excessive rate limiting
# TODO: Min steer speed seems to be about 3 MPH; may differ per car
# TODO: Unsure of driver values
# TODO: MAX_GAS, ZERO_GAS and MAX_BRAKE, MAX_ACC_REGEN are based on a specific volt year...
STEER_MAX = 300 # GM limit is 3Nm. Used by carcontroller to generate LKA output
STEER_STEP = 2 # Control frames per command (50hz)
STEER_DELTA_UP = 7 # Delta rates require review due to observed EPS weakness
Expand Down Expand Up @@ -55,6 +60,8 @@ class CAR:
ACADIA = "GMC ACADIA DENALI 2018"
BUICK_REGAL = "BUICK REGAL ESSENCE 2018"
ESCALADE_ESV = "CADILLAC ESCALADE ESV 2016"
SILVERADO = "CHEVROLET SILVERADO 1500 2020"
BOLT_EUV = "CHEVROLET BOLT EUV PREMIER 2022"


class Footnote(Enum):
Expand All @@ -63,6 +70,12 @@ class Footnote(Enum):
'<a href="https://github.com/commaai/openpilot/wiki/GM#hardware">community built ASCM harness</a>. ' +
'<b><i>NOTE: disconnecting the ASCM disables Automatic Emergency Braking (AEB).</i></b>',
Column.MODEL)
CAM_HARNESS = CarFootnote(
"Currently Requires a [harness box](https://comma.ai/shop/products/harness-box) and [community built GM camera harness]" +
"(https://github.com/commaai/openpilot/wiki/GMCamHarness)",
Column.MODEL)

# TODO: Submit PR for gm cam harness schematic(s), diagrams and board layout(s) to https://github.com/commaai/neo/tree/master/car_harness


@dataclass
Expand All @@ -80,6 +93,8 @@ class GMCarInfo(CarInfo):
CAR.ACADIA: GMCarInfo("GMC Acadia 2018", video_link="https://www.youtube.com/watch?v=0ZN6DdsBUZo"),
CAR.BUICK_REGAL: GMCarInfo("Buick Regal Essence 2018"),
CAR.ESCALADE_ESV: GMCarInfo("Cadillac Escalade ESV 2016", "Adaptive Cruise Control (ACC) & LKAS"), # TODO: can probably just be ACC?
CAR.SILVERADO: GMCarInfo("Chevrolet Silverado 1500 2020", "Driver Alert Package II", footnotes=[Footnote.CAM_HARNESS], harness=Harness.gm_cam),
CAR.BOLT_EUV: GMCarInfo("Chevrolet Bolt EUV Premier 2022", "Chevy Safety Assist", footnotes=[Footnote.CAM_HARNESS], harness=Harness.gm_cam),
}


Expand Down Expand Up @@ -145,8 +160,23 @@ class CanBus:
190: 6, 193: 8, 197: 8, 199: 4, 201: 8, 208: 8, 209: 7, 211: 2, 241: 6, 249: 8, 288: 5, 289: 8, 298: 8, 304: 1, 309: 8, 313: 8, 320: 3, 322: 7, 328: 1, 338: 6, 340: 6, 352: 5, 381: 8, 384: 4, 386: 8, 388: 8, 393: 8, 398: 8, 413: 8, 417: 7, 419: 1, 422: 4, 426: 7, 431: 8, 442: 8, 451: 8, 452: 8, 453: 6, 454: 8, 455: 7, 462: 4, 463: 3, 479: 3, 481: 7, 485: 8, 489: 8, 497: 8, 499: 3, 500: 6, 501: 8, 508: 8, 510: 8, 532: 6, 554: 3, 560: 8, 562: 8, 563: 5, 564: 5, 567: 5, 573: 1, 577: 8, 608: 8, 609: 6, 610: 6, 611: 6, 612: 8, 613: 8, 647: 6, 707: 8, 715: 8, 717: 5, 753: 5, 761: 7, 840: 5, 842: 5, 844: 8, 866: 4, 869: 4, 880: 6, 961: 8, 969: 8, 977: 8, 979: 8, 985: 5, 1001: 8, 1005: 6, 1009: 8, 1017: 8, 1020: 8, 1033: 7, 1034: 7, 1105: 6, 1217: 8, 1221: 5, 1225: 8, 1233: 8, 1249: 8, 1257: 6, 1265: 8, 1267: 1, 1280: 4, 1296: 4, 1300: 8, 1322: 6, 1328: 4, 1417: 8, 1601: 8, 1906: 7, 1907: 7, 1912: 7, 1914: 7, 1919: 7, 1920: 7, 1930: 7, 2016: 8, 2024: 8
}],
CAR.ESCALADE_ESV: [
# Note: This fingerprint is incomplete and causes false matches
{
309: 1, 848: 8, 849: 8, 850: 8, 851: 8, 852: 8, 853: 8, 854: 3, 1056: 6, 1057: 8, 1058: 8, 1059: 8, 1060: 8, 1061: 8, 1062: 8, 1063: 8, 1064: 8, 1065: 8, 1066: 8, 1067: 8, 1068: 8, 1120: 8, 1121: 8, 1122: 8, 1123: 8, 1124: 8, 1125: 8, 1126: 8, 1127: 8, 1128: 8, 1129: 8, 1130: 8, 1131: 8, 1132: 8, 1133: 8, 1134: 8, 1135: 8, 1136: 8, 1137: 8, 1138: 8, 1139: 8, 1140: 8, 1141: 8, 1142: 8, 1143: 8, 1146: 8, 1147: 8, 1148: 8, 1149: 8, 1150: 8, 1151: 8, 1216: 8, 1217: 8, 1218: 8, 1219: 8, 1220: 8, 1221: 8, 1222: 8, 1223: 8, 1224: 8, 1225: 8, 1226: 8, 1232: 8, 1233: 8, 1234: 8, 1235: 8, 1236: 8, 1237: 8, 1238: 8, 1239: 8, 1240: 8, 1241: 8, 1242: 8, 1787: 8, 1788: 8
},
# Escalade ESV
{
170: 8, 190: 6, 192: 5, 193: 8, 197: 8, 199: 4, 201: 8, 208: 8, 209: 7, 211: 2, 241: 6, 249: 8, 288: 5, 289: 1, 290: 1, 298: 8, 300: 1, 304: 8, 309: 8, 311: 8, 313: 8, 320: 8, 328: 1, 352: 5, 368: 8, 369: 8, 381: 5, 384: 4, 386: 5, 388: 8, 393: 7, 398: 8, 407: 7, 413: 8, 417: 7, 419: 1, 422: 4, 426: 7, 431: 8, 442: 8, 451: 8, 452: 8, 453: 6, 454: 8, 455: 7, 463: 3, 479: 3, 481: 7, 485: 8, 487: 8, 489: 8, 497: 8, 499: 3, 500: 6, 501: 8, 508: 8, 510: 8, 512: 3, 530: 8, 532: 6, 534: 2, 554: 3, 560: 8, 562: 8, 563: 5, 564: 5, 573: 1, 577: 8, 578: 8, 579: 8, 587: 8, 608: 8, 609: 6, 610: 6, 611: 6, 612: 8, 613: 8, 647: 6, 707: 8, 715: 8, 717: 5, 719: 5, 761: 7, 789: 5, 800: 6, 801: 5, 803: 8, 804: 3, 805: 8, 810: 8, 821: 4, 823: 7, 832: 8, 840: 5, 842: 5, 844: 8, 866: 4, 869: 4, 880: 6, 961: 8, 967: 4, 969: 8, 977: 8, 979: 8, 985: 5, 1001: 8, 1005: 6, 1009: 8, 1013: 3, 1017: 8, 1019: 2, 1020: 8, 1033: 7, 1034: 7, 1105: 6, 1217: 8, 1221: 5, 1223: 2, 1225: 7, 1233: 8, 1249: 8, 1257: 6, 1265: 8, 1267: 1, 1280: 4, 1296: 4, 1300: 8, 1322: 6, 1323: 4, 1328: 4, 1417: 8, 1601: 8, 1602: 8, 1603: 7, 1611: 8, 1618: 8, 1906: 7, 1907: 7, 1912: 7, 1917: 7, 1918: 7, 1919: 7, 1920: 7, 1930: 7, 2016: 8, 2018: 8, 2019: 8, 2024: 8, 2026: 8
}],
CAR.SILVERADO: [
# 2020 Chevrolet Silverado 1500 4WD Crew Cab 147" LTZ
{
190: 6, 193: 8, 197: 8, 201: 8, 208: 8, 209: 7, 211: 2, 241: 6, 249: 8, 257: 8, 288: 5, 289: 8, 298: 8, 304: 3, 309: 8, 311: 8, 313: 8, 320: 4, 322: 7, 328: 1, 352: 5, 381: 8, 384: 4, 386: 8, 388: 8, 413: 8, 451: 8, 452: 8, 453: 6, 455: 7, 460: 5, 463: 3, 479: 3, 481: 7, 485: 8, 489: 8, 497: 8, 500: 6, 501: 8, 528: 5, 532: 6, 560: 8, 562: 8, 563: 5, 565: 5, 608: 8, 609: 6, 610: 6, 611: 6, 612: 8, 613: 8, 707: 8, 715: 8, 717: 5, 761: 7, 789: 5, 800: 6, 810: 8, 840: 5, 842: 5, 844: 8, 848: 4, 869: 4, 880: 6, 977: 8, 1001: 8, 1011: 6, 1017: 8, 1020: 8, 1033: 7, 1034: 7, 1217: 8, 1221: 5, 1233: 8, 1249: 8, 1259: 8, 1261: 7, 1263: 4, 1265: 8, 1267: 1, 1271: 8, 1280: 4, 1296: 4, 1300: 8, 1930: 7
}],
CAR.BOLT_EUV: [
# Chevy Bolt EUV 2019 (Stock VOACC, LKAS)
{
189: 7, 190: 7, 193: 8, 197: 8, 201: 8, 209: 7, 211: 3, 241: 6, 257: 8, 288: 5, 289: 8, 298: 8, 304: 3, 309: 8, 311: 8, 313: 8, 320: 4, 322: 7, 328: 1, 352: 5, 381: 8, 384: 4, 386: 8, 388: 8, 451: 8, 452:8, 453: 6, 458: 5, 463: 3, 479: 3, 481: 7, 485: 8, 489: 8, 497: 8, 500: 6, 501: 8, 528: 5, 532: 6, 560: 8, 562: 8, 563: 5, 565: 5, 566: 8, 608: 8, 609: 6, 610: 6, 611: 6, 612: 8, 613: 8, 707: 8, 715: 8, 717: 5, 753: 5, 761: 7, 789: 5, 800: 6, 810: 8, 840: 5, 842: 5, 844: 8, 848: 4, 869: 4, 880: 6, 977: 8, 1001: 8, 1017: 8, 1020: 8, 1217: 8, 1221: 5, 1233: 8, 1249: 8, 1265: 8, 1280: 4, 1296: 4, 1300: 8, 1930: 7
}],
}

Expand Down
4 changes: 4 additions & 0 deletions selfdrive/car/torque_data/override.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -29,3 +29,7 @@ mock: [10.0, 10, 0.0]

# Manually checked
HONDA CIVIC 2022: [2.5, 1.2, 0.15]

# New GM Cars
CHEVROLET SILVERADO 1500 2020: [.nan, 1.5, .nan]
CHEVROLET BOLT EUV PREMIER 2022: [.nan, 1.5, .nan]