Skip to content

Commit

Permalink
Add 2021-22 Honda Odyssey and 2022 Acura RDX
Browse files Browse the repository at this point in the history
Add to cam parser

explicit

new line
  • Loading branch information
csouers committed Aug 17, 2022
1 parent baef4c1 commit 35a2694
Show file tree
Hide file tree
Showing 9 changed files with 233 additions and 78 deletions.
2 changes: 2 additions & 0 deletions RELEASES.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ Version 0.8.16 (2022-XX-XX)
* Hyundai Ioniq 5 2022 support thanks to sunnyhaibin!
* Hyundai Kona Electric 2022 support thanks to sunnyhaibin!
* Subaru Outback 2020-22 support
* Honda Odyssey 2021-22 support thanks to csouers!
* Acura RDX 2022 support thanks to csouers!

Version 0.8.15 (2022-07-20)
========================
Expand Down
119 changes: 61 additions & 58 deletions docs/CARS.md

Large diffs are not rendered by default.

4 changes: 3 additions & 1 deletion selfdrive/car/honda/carcontroller.py
Original file line number Diff line number Diff line change
Expand Up @@ -154,8 +154,10 @@ def update(self, CC, CS):
if self.frame % 10 == 0:
can_sends.append((0x18DAB0F1, 0, b"\x02\x3E\x80\x00\x00\x00\x00\x00", 1))

lateral_active = CC.enabled if self.CP.minSteerSpeed > 0. else CC.latActive

# Send steering command.
can_sends.append(hondacan.create_steering_control(self.packer, apply_steer, CC.latActive, self.CP.carFingerprint,
can_sends.append(hondacan.create_steering_control(self.packer, apply_steer, lateral_active, self.CP.carFingerprint,
CS.CP.openpilotLongitudinalControl))

# wind brake from air resistance decel at high speed
Expand Down
39 changes: 27 additions & 12 deletions selfdrive/car/honda/carstate.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
from selfdrive.car.interfaces import CarStateBase

TransmissionType = car.CarParams.TransmissionType

MAX_STEPS_STEER_MISMATCH = 4 + 2 # 3-4 steps is most common. Inlude a buffer.

def get_can_signals(CP, gearbox_msg, main_on_sig_msg):
signals = [
Expand Down Expand Up @@ -67,7 +67,7 @@ def get_can_signals(CP, gearbox_msg, main_on_sig_msg):
("SCM_BUTTONS", 25),
]

if CP.carFingerprint in (CAR.CRV_HYBRID, CAR.CIVIC_BOSCH_DIESEL, CAR.ACURA_RDX_3G, CAR.HONDA_E):
if CP.carFingerprint in (CAR.CRV_HYBRID, CAR.CIVIC_BOSCH_DIESEL, CAR.ACURA_RDX_3G, CAR.HONDA_E, CAR.ODYSSEY_BOSCH):
checks.append((gearbox_msg, 50))
else:
checks.append((gearbox_msg, 100))
Expand All @@ -86,6 +86,7 @@ def get_can_signals(CP, gearbox_msg, main_on_sig_msg):
signals += [
("CRUISE_CONTROL_LABEL", "ACC_HUD"),
("CRUISE_SPEED", "ACC_HUD"),
("IMPERIAL_UNIT", "ACC_HUD"),
("ACCEL_COMMAND", "ACC_CONTROL"),
("AEB_STATUS", "ACC_CONTROL"),
]
Expand All @@ -102,7 +103,7 @@ def get_can_signals(CP, gearbox_msg, main_on_sig_msg):
else:
checks.append(("CRUISE_PARAMS", 50))

if CP.carFingerprint in (CAR.ACCORD, CAR.ACCORDH, CAR.CIVIC_BOSCH, CAR.CIVIC_BOSCH_DIESEL, CAR.CRV_HYBRID, CAR.INSIGHT, CAR.ACURA_RDX_3G, CAR.HONDA_E, CAR.CIVIC_2022):
if CP.carFingerprint in (CAR.ACCORD, CAR.ACCORDH, CAR.CIVIC_BOSCH, CAR.CIVIC_BOSCH_DIESEL, CAR.CRV_HYBRID, CAR.INSIGHT, CAR.ACURA_RDX_3G, CAR.HONDA_E, CAR.CIVIC_2022, CAR.ODYSSEY_BOSCH):
signals.append(("DRIVERS_DOOR_OPEN", "SCM_FEEDBACK"))
elif CP.carFingerprint in (CAR.ODYSSEY_CHN, CAR.FREED, CAR.HRV):
signals.append(("DRIVERS_DOOR_OPEN", "SCM_BUTTONS"))
Expand All @@ -126,6 +127,9 @@ def get_can_signals(CP, gearbox_msg, main_on_sig_msg):
]
checks.append(("STANDSTILL", 50))

if CP.minSteerSpeed > 0.:
signals.append(("STEER_CONTROL_ACTIVE", "STEER_STATUS"))

return signals, checks


Expand All @@ -143,6 +147,7 @@ def __init__(self, CP):

self.shifter_values = can_define.dv[self.gearbox_msg]["GEAR_SHIFTER"]
self.steer_status_values = defaultdict(lambda: "UNKNOWN", can_define.dv["STEER_STATUS"]["STEER_STATUS"])
self.steer_mismatch_cnt = 0

self.brake_error = False
self.brake_switch_prev = False
Expand Down Expand Up @@ -171,7 +176,7 @@ def update(self, cp, cp_cam, cp_body):
# panda checks if the signal is non-zero
ret.standstill = cp.vl["ENGINE_DATA"]["XMISSION_SPEED"] < 1e-5
# TODO: find a common signal across all cars
if self.CP.carFingerprint in (CAR.ACCORD, CAR.ACCORDH, CAR.CIVIC_BOSCH, CAR.CIVIC_BOSCH_DIESEL, CAR.CRV_HYBRID, CAR.INSIGHT, CAR.ACURA_RDX_3G, CAR.HONDA_E, CAR.CIVIC_2022):
if self.CP.carFingerprint in (CAR.ACCORD, CAR.ACCORDH, CAR.CIVIC_BOSCH, CAR.CIVIC_BOSCH_DIESEL, CAR.CRV_HYBRID, CAR.INSIGHT, CAR.ACURA_RDX_3G, CAR.HONDA_E, CAR.CIVIC_2022, CAR.ODYSSEY_BOSCH):
ret.doorOpen = bool(cp.vl["SCM_FEEDBACK"]["DRIVERS_DOOR_OPEN"])
elif self.CP.carFingerprint in (CAR.ODYSSEY_CHN, CAR.FREED, CAR.HRV):
ret.doorOpen = bool(cp.vl["SCM_BUTTONS"]["DRIVERS_DOOR_OPEN"])
Expand All @@ -180,12 +185,6 @@ def update(self, cp, cp_cam, cp_body):
cp.vl["DOORS_STATUS"]["DOOR_OPEN_RL"], cp.vl["DOORS_STATUS"]["DOOR_OPEN_RR"]])
ret.seatbeltUnlatched = bool(cp.vl["SEATBELT_STATUS"]["SEATBELT_DRIVER_LAMP"] or not cp.vl["SEATBELT_STATUS"]["SEATBELT_DRIVER_LATCHED"])

steer_status = self.steer_status_values[cp.vl["STEER_STATUS"]["STEER_STATUS"]]
ret.steerFaultPermanent = steer_status not in ("NORMAL", "NO_TORQUE_ALERT_1", "NO_TORQUE_ALERT_2", "LOW_SPEED_LOCKOUT", "TMP_FAULT")
# LOW_SPEED_LOCKOUT is not worth a warning
# NO_TORQUE_ALERT_2 can be caused by bump or steering nudge from driver
ret.steerFaultTemporary = steer_status not in ("NORMAL", "LOW_SPEED_LOCKOUT", "NO_TORQUE_ALERT_2")

if self.CP.openpilotLongitudinalControl:
self.brake_error = cp.vl["STANDSTILL"]["BRAKE_ERROR_1"] or cp.vl["STANDSTILL"]["BRAKE_ERROR_2"]
ret.espDisabled = cp.vl["VSA_STATUS"]["ESP_DISABLED"] != 0
Expand Down Expand Up @@ -235,9 +234,9 @@ def update(self, cp, cp_cam, cp_body):
acc_hud = cp_cam.vl["ACC_HUD"] if self.CP.carFingerprint in HONDA_BOSCH_RADARLESS else cp.vl["ACC_HUD"]
ret.cruiseState.nonAdaptive = acc_hud["CRUISE_CONTROL_LABEL"] != 0
ret.cruiseState.standstill = acc_hud["CRUISE_SPEED"] == 252.

# on certain cars, CRUISE_SPEED changes to imperial with car's unit setting
conversion_factor = CV.MPH_TO_MS if self.CP.carFingerprint in HONDA_BOSCH_RADARLESS and not self.is_metric else CV.KPH_TO_MS
## TODO: verify with certainty. initial test route checks show that Bosch sets this unit according to the vehicles origin
conversion_factor = CV.MPH_TO_MS if bool(acc_hud["IMPERIAL_UNIT"]) else CV.KPH_TO_MS
# On set, cruise set speed pulses between 254~255 and the set speed prev is set to avoid this.
ret.cruiseState.speed = self.v_cruise_pcm_prev if acc_hud["CRUISE_SPEED"] > 160.0 else acc_hud["CRUISE_SPEED"] * conversion_factor
self.v_cruise_pcm_prev = ret.cruiseState.speed
Expand All @@ -263,6 +262,21 @@ def update(self, cp, cp_cam, cp_body):
ret.cruiseState.enabled = cp.vl["POWERTRAIN_DATA"]["ACC_STATUS"] != 0
ret.cruiseState.available = bool(cp.vl[self.main_on_sig_msg]["MAIN_ON"])

steer_status = self.steer_status_values[cp.vl["STEER_STATUS"]["STEER_STATUS"]]
# LOW_SPEED_LOCKOUT is not worth a warning on most cars
# NO_TORQUE_ALERT_2 can be caused by bump or steering nudge from driver
ret.steerFaultPermanent = steer_status not in ("NORMAL", "NO_TORQUE_ALERT_1", "NO_TORQUE_ALERT_2", "LOW_SPEED_LOCKOUT", "TMP_FAULT")
if self.CP.minSteerSpeed > 0.:
# TODO: make generic for all makes and clean up
# Check for steer mismatch when engaged and moving before setting a temporary fault. Allow for a small buffer as to not flash the alert when engaging.
self.steer_mismatch_cnt = self.steer_mismatch_cnt + 1 if ret.cruiseState.enabled and \
not bool(cp.vl["STEER_STATUS"]["STEER_CONTROL_ACTIVE"]) and not ret.standstill else 0
steer_mismatch = True if self.steer_mismatch_cnt > MAX_STEPS_STEER_MISMATCH else False
else:
steer_mismatch = False
# TODO: detect the torque request diff from OP vs the radar
ret.steerFaultTemporary = steer_status not in ("NORMAL", "LOW_SPEED_LOCKOUT", "NO_TORQUE_ALERT_2") or steer_mismatch

# Gets rid of Pedal Grinding noise when brake is pressed at slow speeds for some models
if self.CP.carFingerprint in (CAR.PILOT, CAR.PASSPORT, CAR.RIDGELINE):
if ret.brake > 0.1:
Expand Down Expand Up @@ -310,6 +324,7 @@ def get_cam_can_parser(CP):
signals += [
("CRUISE_SPEED", "ACC_HUD"),
("CRUISE_CONTROL_LABEL", "ACC_HUD"),
("IMPERIAL_UNIT", "ACC_HUD"),
]
checks.append(("ACC_HUD", 10))

Expand Down
11 changes: 8 additions & 3 deletions selfdrive/car/honda/interface.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
from panda import Panda
from common.conversions import Conversions as CV
from common.numpy_fast import interp
from selfdrive.car.honda.values import CarControllerParams, CruiseButtons, HondaFlags, CAR, HONDA_BOSCH, HONDA_NIDEC_ALT_SCM_MESSAGES, HONDA_BOSCH_ALT_BRAKE_SIGNAL, HONDA_BOSCH_RADARLESS
from selfdrive.car.honda.values import CarControllerParams, CruiseButtons, HondaFlags, CAR, HONDA_BOSCH, HONDA_NIDEC_ALT_SCM_MESSAGES, HONDA_BOSCH_ALT_BRAKE_SIGNAL, HONDA_BOSCH_RADARLESS, STEER_LIMITING_RADAR
from selfdrive.car import STD_CARGO_KG, CivicParams, create_button_enable_events, create_button_event, scale_rot_inertia, scale_tire_stiffness, gen_empty_fingerprint, get_safety_config
from selfdrive.car.interfaces import CarInterfaceBase
from selfdrive.car.disable_ecu import disable_ecu
Expand Down Expand Up @@ -84,6 +84,8 @@ def get_params(candidate, fingerprint=gen_empty_fingerprint(), car_fw=[], disabl
for fw in car_fw:
if fw.ecu == "eps" and b"," in fw.fwVersion:
eps_modified = True
if fw.ecu == "fwdRadar" and fw.fwVersion in STEER_LIMITING_RADAR and not ret.openpilotLongitudinalControl:
ret.minSteerSpeed = 36.5 * CV.MPH_TO_MS

if candidate == CAR.CIVIC:
ret.mass = CivicParams.MASS
Expand Down Expand Up @@ -219,12 +221,15 @@ def get_params(candidate, fingerprint=gen_empty_fingerprint(), car_fw=[], disabl
ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.2], [0.06]]
tire_stiffness_factor = 0.677

elif candidate == CAR.ODYSSEY:
elif candidate in (CAR.ODYSSEY, CAR.ODYSSEY_BOSCH):
ret.mass = 4471. * CV.LB_TO_KG + STD_CARGO_KG
ret.wheelbase = 3.00
ret.centerToFront = ret.wheelbase * 0.41
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
if candidate == CAR.ODYSSEY_BOSCH and not ret.openpilotLongitudinalControl:
ret.lateralParams.torqueBP, ret.lateralParams.torqueV = [[0, 3840], [0, 3840]] # clipped by radar
else:
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.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.28], [0.08]]

Expand Down
62 changes: 58 additions & 4 deletions selfdrive/car/honda/values.py
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,7 @@ class CAR:
HRV = "HONDA HRV 2019"
ODYSSEY = "HONDA ODYSSEY 2018"
ODYSSEY_CHN = "HONDA ODYSSEY CHN 2019"
ODYSSEY_BOSCH = "HONDA ODYSSEY 2021"
ACURA_RDX = "ACURA RDX 2018"
ACURA_RDX_3G = "ACURA RDX 2020"
PILOT = "HONDA PILOT 2017"
Expand All @@ -99,7 +100,9 @@ class Footnote(Enum):
CIVIC_DIESEL = CarFootnote(
"2019 Honda Civic 1.6L Diesel Sedan does not have ALC below 12mph.",
Column.FSR_STEERING)

STEER_LIMITING_RADAR = CarFootnote(
"Stock LKAS limitations apply when used with Stock ACC, including minimum speed and active windshield wiper mode.",
Column.FSR_STEERING)

@dataclass
class HondaCarInfo(CarInfo):
Expand Down Expand Up @@ -133,8 +136,12 @@ class HondaCarInfo(CarInfo):
CAR.HRV: HondaCarInfo("Honda HR-V 2019-22", harness=Harness.nidec),
CAR.ODYSSEY: HondaCarInfo("Honda Odyssey 2018-20", min_steer_speed=0., harness=Harness.nidec),
CAR.ODYSSEY_CHN: None, # Chinese version of Odyssey
CAR.ODYSSEY_BOSCH: HondaCarInfo("Honda Odyssey 2021-22", "All", min_steer_speed=36.5 * CV.MPH_TO_MS, footnotes=[Footnote.STEER_LIMITING_RADAR], harness=Harness.bosch_a),
CAR.ACURA_RDX: HondaCarInfo("Acura RDX 2016-18", "AcuraWatch Plus", harness=Harness.nidec),
CAR.ACURA_RDX_3G: HondaCarInfo("Acura RDX 2019-22", "All", min_steer_speed=3. * CV.MPH_TO_MS, harness=Harness.bosch_a),
CAR.ACURA_RDX_3G: [
HondaCarInfo("Acura RDX 2019-21", "All", min_steer_speed=3. * CV.MPH_TO_MS, harness=Harness.bosch_a),
HondaCarInfo("Acura RDX 2022", "All", min_steer_speed=36.5 * CV.MPH_TO_MS, footnotes=[Footnote.STEER_LIMITING_RADAR], harness=Harness.bosch_a),
],
CAR.PILOT: HondaCarInfo("Honda Pilot 2016-22", harness=Harness.nidec),
CAR.PASSPORT: HondaCarInfo("Honda Passport 2019-21", "All", harness=Harness.nidec),
CAR.RIDGELINE: HondaCarInfo("Honda Ridgeline 2017-22", harness=Harness.nidec),
Expand Down Expand Up @@ -1023,6 +1030,35 @@ class HondaCarInfo(CarInfo):
b'54008-THR-A020\x00\x00',
],
},
CAR.ODYSSEY_BOSCH: {
(Ecu.programmedFuelInjection, 0x18da10f1, None): [
b'37805-5MR-C730\x00\x00', # 2021 Touring
b'37805-5MR-C910\x00\x00', # 2022 Touring
b'37805-5MR-C920\x00\x00', # 2022 Elite
],
(Ecu.transmission, 0x18da1ef1, None): [
b'28102-5MX-A100\x00\x00', # 2021 Touring, 2022 Elite
b'28102-5MX-C100\x00\x00', # 2022 Touring
],
(Ecu.electricBrakeBooster, 0x18da2bf1, None): [b'46114-THR-A530\x00\x00'],
(Ecu.gateway, 0x18daeff1, None): [b'38897-THR-A130\x00\x00'],
(Ecu.eps, 0x18da30f1, None): [b'39990-THR-A050\x00\x00'],
(Ecu.fwdRadar, 0x18dab0f1, None): [b'36802-THR-A220\x00\x00'],
(Ecu.fwdCamera, 0x18dab5f1, None): [b'36161-THR-A220\x00\x00'],
(Ecu.shiftByWire, 0x18da0bf1, None): [b'54008-THR-A310\x00\x00'],
(Ecu.srs, 0x18da53f1, None): [b'77959-THR-A220\x00\x00'],
(Ecu.vsa, 0x18da28f1, None): [
b'57114-THR-A230\x00\x00',
b'57114-THR-A240\x00\x00', # 2022 Elite
],
(Ecu.combinationMeter, 0x18da60f1, None): [
b'78109-THR-AS10\x00\x00', # 2021 Touring
b'78109-THR-AT10\x00\x00', # 2021 ?, 2022 Elite
b'78109-THR-CT10\x00\x00', # 2022 Touring
b'78109-THR-AR10\x00\x00', # 2021 EX-L
b'78109-THR-AQ10\x00\x00', # 2022 EX
],
},
CAR.PILOT: {
(Ecu.shiftByWire, 0x18da0bf1, None): [
b'54008-TG7-A520\x00\x00',
Expand Down Expand Up @@ -1194,6 +1230,7 @@ class HondaCarInfo(CarInfo):
b'37805-5YF-A750\x00\x00',
b'37805-5YF-A850\x00\x00',
b'37805-5YF-A870\x00\x00',
b'37805-5YF-AD20\x00\x00',
b'37805-5YF-C210\x00\x00',
b'37805-5YF-C220\x00\x00',
b'37805-5YF-C410\000\000',
Expand All @@ -1202,23 +1239,28 @@ class HondaCarInfo(CarInfo):
(Ecu.vsa, 0x18da28f1, None): [
b'57114-TJB-A030\x00\x00',
b'57114-TJB-A040\x00\x00',
b'57114-TJB-A120\x00\x00',
],
(Ecu.fwdRadar, 0x18dab0f1, None): [
b'36802-TJB-A040\x00\x00',
b'36802-TJB-A050\x00\x00',
b'36802-TJB-A540\x00\x00',
],
(Ecu.fwdCamera, 0x18dab5f1, None): [
b'36161-TJB-A040\x00\x00',
b'36161-TJB-A530\x00\x00',
],
(Ecu.shiftByWire, 0x18da0bf1, None): [
b'54008-TJB-A520\x00\x00',
b'54008-TJB-A530\x00\x00',
],
(Ecu.transmission, 0x18da1ef1, None): [
b'28102-5YK-A610\x00\x00',
b'28102-5YK-A620\x00\x00',
b'28102-5YK-A630\x00\x00',
b'28102-5YK-A700\x00\x00',
b'28102-5YK-A711\x00\x00',
b'28102-5YK-A800\x00\x00',
b'28102-5YL-A620\x00\x00',
b'28102-5YL-A700\x00\x00',
b'28102-5YL-A711\x00\x00',
Expand All @@ -1230,6 +1272,7 @@ class HondaCarInfo(CarInfo):
b'78109-TJB-AB10\x00\x00',
b'78109-TJB-AD10\x00\x00',
b'78109-TJB-AF10\x00\x00',
b'78109-TJB-AQ20\x00\x00',
b'78109-TJB-AR10\x00\x00',
b'78109-TJB-AS10\000\000',
b'78109-TJB-AU10\x00\x00',
Expand All @@ -1241,23 +1284,30 @@ class HondaCarInfo(CarInfo):
],
(Ecu.srs, 0x18da53f1, None): [
b'77959-TJB-A040\x00\x00',
b'77959-TJB-A120\x00\x00',
b'77959-TJB-A210\x00\x00',
],
(Ecu.electricBrakeBooster, 0x18da2bf1, None): [
b'46114-TJB-A040\x00\x00',
b'46114-TJB-A050\x00\x00',
b'46114-TJB-A060\x00\x00',
b'46114-TJB-A120\x00\x00',
],
(Ecu.gateway, 0x18daeff1, None): [
b'38897-TJB-A040\x00\x00',
b'38897-TJB-A110\x00\x00',
b'38897-TJB-A120\x00\x00',
b'38897-TJB-A220\x00\x00',
],
(Ecu.eps, 0x18da30f1, None): [
b'39990-TJB-A030\x00\x00',
b'39990-TJB-A040\x00\x00',
b'39990-TJB-A070\x00\x00',
b'39990-TJB-A130\x00\x00'
],
(Ecu.unknown, 0x18da3af1, None):[
b'39390-TJB-A110\x00\x00',
],
},
CAR.RIDGELINE: {
(Ecu.eps, 0x18da30f1, None): [
Expand Down Expand Up @@ -1444,6 +1494,9 @@ class HondaCarInfo(CarInfo):
},
}

# Bosch radar with these firmware IDs limit steering availability to the same vehicle conditions as the factory LKAS (i.e. speed and wiper mode).
STEER_LIMITING_RADAR = [b'36802-THR-A220\x00\x00', b'36802-TJB-A540\x00\x00']

DBC = {
CAR.ACCORD: dbc_dict('honda_accord_2018_can_generated', None),
CAR.ACCORDH: dbc_dict('honda_accord_2018_can_generated', None),
Expand All @@ -1462,6 +1515,7 @@ class HondaCarInfo(CarInfo):
CAR.HRV: dbc_dict('honda_fit_ex_2018_can_generated', 'acura_ilx_2016_nidec'),
CAR.ODYSSEY: dbc_dict('honda_odyssey_exl_2018_generated', 'acura_ilx_2016_nidec'),
CAR.ODYSSEY_CHN: dbc_dict('honda_odyssey_extreme_edition_2018_china_can_generated', 'acura_ilx_2016_nidec'),
CAR.ODYSSEY_BOSCH: dbc_dict('acura_rdx_2020_can_generated', None),
CAR.PILOT: dbc_dict('acura_ilx_2016_can_generated', 'acura_ilx_2016_nidec'),
CAR.PASSPORT: dbc_dict('acura_ilx_2016_can_generated', 'acura_ilx_2016_nidec'),
CAR.RIDGELINE: dbc_dict('acura_ilx_2016_can_generated', 'acura_ilx_2016_nidec'),
Expand All @@ -1480,6 +1534,6 @@ class HondaCarInfo(CarInfo):
HONDA_NIDEC_ALT_SCM_MESSAGES = {CAR.ACURA_ILX, CAR.ACURA_RDX, CAR.CRV, CAR.CRV_EU, CAR.FIT, CAR.FREED, CAR.HRV, CAR.ODYSSEY_CHN,
CAR.PILOT, CAR.PASSPORT, CAR.RIDGELINE}
HONDA_BOSCH = {CAR.ACCORD, CAR.ACCORDH, CAR.CIVIC_BOSCH, CAR.CIVIC_BOSCH_DIESEL, CAR.CRV_5G,
CAR.CRV_HYBRID, CAR.INSIGHT, CAR.ACURA_RDX_3G, CAR.HONDA_E, CAR.CIVIC_2022}
HONDA_BOSCH_ALT_BRAKE_SIGNAL = {CAR.ACCORD, CAR.CRV_5G, CAR.ACURA_RDX_3G}
CAR.CRV_HYBRID, CAR.INSIGHT, CAR.ACURA_RDX_3G, CAR.HONDA_E, CAR.CIVIC_2022, CAR.ODYSSEY_BOSCH}
HONDA_BOSCH_ALT_BRAKE_SIGNAL = {CAR.ACCORD, CAR.CRV_5G, CAR.ACURA_RDX_3G, CAR.ODYSSEY_BOSCH}
HONDA_BOSCH_RADARLESS = {CAR.CIVIC_2022}
3 changes: 3 additions & 0 deletions selfdrive/car/tests/routes.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,8 @@
TestRoute("f08912a233c1584f|2022-08-11--18-02-41", GM.BOLT_EUV),

TestRoute("0e7a2ba168465df5|2020-10-18--14-14-22", HONDA.ACURA_RDX_3G),
# do we need this?
# TestRoute("", HONDA.ACURA_RDX_3G), # 2022 with radar steering limitation
TestRoute("a74b011b32b51b56|2020-07-26--17-09-36", HONDA.CIVIC),
TestRoute("a859a044a447c2b0|2020-03-03--18-42-45", HONDA.CRV_EU),
TestRoute("68aac44ad69f838e|2021-05-18--20-40-52", HONDA.CRV),
Expand All @@ -66,6 +68,7 @@
TestRoute("f29e2b57a55e7ad5|2021-03-24--20-52-38", HONDA.ACCORDH), # 2021 with new style HUD msgs
TestRoute("1ad763dd22ef1a0e|2020-02-29--18-37-03", HONDA.CRV_5G),
TestRoute("0a96f86fcfe35964|2020-02-05--07-25-51", HONDA.ODYSSEY),
# TestRoute("", HONDA.ODYSSEY_BOSCH), # TODO: get this
TestRoute("d83f36766f8012a5|2020-02-05--18-42-21", HONDA.CIVIC_BOSCH_DIESEL),
TestRoute("f0890d16a07a236b|2021-05-25--17-27-22", HONDA.INSIGHT),
TestRoute("07d37d27996096b6|2020-03-04--21-57-27", HONDA.PILOT),
Expand Down
1 change: 1 addition & 0 deletions selfdrive/car/torque_data/substitute.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ HONDA CR-V EU 2016: HONDA CR-V 2016
HONDA CIVIC SEDAN 1.6 DIESEL 2019: HONDA CIVIC (BOSCH) 2019
HONDA E 2020: HONDA CIVIC (BOSCH) 2019
HONDA ODYSSEY CHN 2019: HONDA ODYSSEY 2018
HONDA ODYSSEY 2021: HONDA ODYSSEY 2018

BUICK REGAL ESSENCE 2018: CHEVROLET VOLT PREMIER 2017
CADILLAC ESCALADE ESV 2016: CHEVROLET VOLT PREMIER 2017
Expand Down
Loading

0 comments on commit 35a2694

Please sign in to comment.