mirror of https://github.com/commaai/openpilot.git
Add Lexus RC support (#22941)
* Add f/w firmware for Lexus RC under LEXUS_IS
`@ph33rl355#0529` 2020 Lexus RC F Track Edition DongleID/route 32696cea52831b02|2021-11-16--23-12-02
Doesn't seem to need a full port, per user feedback...
https://discord.com/channels/469524606043160576/524327905937850394/910400788319326229
* Update CARS.md
* Separated Lexus RC from IS... still using IS DBC
* match lexus IS for now
* Update wheelbase to match published specs
I'm hesitant to touch `mass`, even though I know it's different from the IS.
* Add TOYOTA.LEXUS_RC test route
Co-authored-by: Willem Melching <willem.melching@gmail.com>
Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
old-commit-hash: d630ec9092
This commit is contained in:
parent
76aed9c23b
commit
821ddf785f
|
@ -37,6 +37,7 @@
|
|||
| Lexus | NX 2018 | All | Stock<sup>3</sup>| 0mph | 0mph |
|
||||
| Lexus | NX 2020 | All | openpilot | 0mph | 0mph |
|
||||
| Lexus | NX Hybrid 2018-19 | All | Stock<sup>3</sup>| 0mph | 0mph |
|
||||
| Lexus | RC 2020 | All | Stock | 22mph | 0mph |
|
||||
| Lexus | RX 2016-18 | All | Stock<sup>3</sup>| 0mph | 0mph |
|
||||
| Lexus | RX 2020-21 | All | openpilot | 0mph | 0mph |
|
||||
| Lexus | RX Hybrid 2016-19 | All | Stock<sup>3</sup>| 0mph | 0mph |
|
||||
|
|
|
@ -113,7 +113,7 @@ class CarController():
|
|||
lead = lead or CS.out.vEgo < 12. # at low speed we always assume the lead is present do ACC can be engaged
|
||||
|
||||
# Lexus IS uses a different cancellation message
|
||||
if pcm_cancel_cmd and CS.CP.carFingerprint == CAR.LEXUS_IS:
|
||||
if pcm_cancel_cmd and CS.CP.carFingerprint in [CAR.LEXUS_IS, CAR.LEXUS_RC]:
|
||||
can_sends.append(create_acc_cancel_command(self.packer))
|
||||
elif CS.CP.openpilotLongitudinalControl:
|
||||
can_sends.append(create_accel_command(self.packer, pcm_accel_cmd, pcm_cancel_cmd, self.standstill_req, lead, CS.acc_type))
|
||||
|
|
|
@ -79,7 +79,7 @@ class CarState(CarStateBase):
|
|||
ret.steeringPressed = abs(ret.steeringTorque) > STEER_THRESHOLD
|
||||
ret.steerWarning = cp.vl["EPS_STATUS"]["LKA_STATE"] not in [1, 5]
|
||||
|
||||
if self.CP.carFingerprint == CAR.LEXUS_IS:
|
||||
if self.CP.carFingerprint in [CAR.LEXUS_IS, CAR.LEXUS_RC]:
|
||||
ret.cruiseState.available = cp.vl["DSU_CRUISE"]["MAIN_ON"] != 0
|
||||
ret.cruiseState.speed = cp.vl["DSU_CRUISE"]["SET_SPEED"] * CV.KPH_TO_MS
|
||||
else:
|
||||
|
@ -93,7 +93,7 @@ class CarState(CarStateBase):
|
|||
# these cars are identified by an ACC_TYPE value of 2.
|
||||
# TODO: it is possible to avoid the lockout and gain stop and go if you
|
||||
# send your own ACC_CONTROL msg on startup with ACC_TYPE set to 1
|
||||
if (self.CP.carFingerprint not in TSS2_CAR and self.CP.carFingerprint != CAR.LEXUS_IS) or \
|
||||
if (self.CP.carFingerprint not in TSS2_CAR and self.CP.carFingerprint not in [CAR.LEXUS_IS, CAR.LEXUS_RC]) or \
|
||||
(self.CP.carFingerprint in TSS2_CAR and self.acc_type == 1):
|
||||
self.low_speed_lockout = cp.vl["PCM_CRUISE_2"]["LOW_SPEED_LOCKOUT"] == 2
|
||||
|
||||
|
@ -168,7 +168,7 @@ class CarState(CarStateBase):
|
|||
("STEER_TORQUE_SENSOR", 50),
|
||||
]
|
||||
|
||||
if CP.carFingerprint == CAR.LEXUS_IS:
|
||||
if CP.carFingerprint in [CAR.LEXUS_IS, CAR.LEXUS_RC]:
|
||||
signals.append(("MAIN_ON", "DSU_CRUISE", 0))
|
||||
signals.append(("SET_SPEED", "DSU_CRUISE", 0))
|
||||
checks.append(("DSU_CRUISE", 5))
|
||||
|
|
|
@ -186,6 +186,15 @@ class CarInterface(CarInterfaceBase):
|
|||
ret.mass = 3736.8 * CV.LB_TO_KG + STD_CARGO_KG
|
||||
set_lat_tune(ret.lateralTuning, LatTunes.PID_L)
|
||||
|
||||
elif candidate == CAR.LEXUS_RC:
|
||||
ret.safetyConfigs[0].safetyParam = 77
|
||||
stop_and_go = False
|
||||
ret.wheelbase = 2.73050
|
||||
ret.steerRatio = 13.3
|
||||
tire_stiffness_factor = 0.444
|
||||
ret.mass = 3736.8 * CV.LB_TO_KG + STD_CARGO_KG
|
||||
set_lat_tune(ret.lateralTuning, LatTunes.PID_L)
|
||||
|
||||
elif candidate == CAR.LEXUS_CTH:
|
||||
ret.safetyConfigs[0].safetyParam = 100
|
||||
stop_and_go = True
|
||||
|
|
|
@ -58,6 +58,7 @@ class CAR:
|
|||
LEXUS_NX = "LEXUS NX 2018"
|
||||
LEXUS_NXH = "LEXUS NX HYBRID 2018"
|
||||
LEXUS_NX_TSS2 = "LEXUS NX 2020"
|
||||
LEXUS_RC = "LEXUS RC 2020"
|
||||
LEXUS_RX = "LEXUS RX 2016"
|
||||
LEXUS_RXH = "LEXUS RX HYBRID 2017"
|
||||
LEXUS_RX_TSS2 = "LEXUS RX 2020"
|
||||
|
@ -804,10 +805,10 @@ FW_VERSIONS = {
|
|||
b'\x018966353M7100\x00\x00\x00\x00',
|
||||
b'\x018966353Q2000\x00\x00\x00\x00',
|
||||
b'\x018966353Q2300\x00\x00\x00\x00',
|
||||
b'\x018966353Q4000\x00\x00\x00\x00',
|
||||
b'\x018966353R1100\x00\x00\x00\x00',
|
||||
b'\x018966353R7100\x00\x00\x00\x00',
|
||||
b'\x018966353R8100\x00\x00\x00\x00',
|
||||
b'\x018966353Q4000\x00\x00\x00\x00',
|
||||
],
|
||||
(Ecu.engine, 0x7e0, None): [
|
||||
b'\x0232480000\x00\x00\x00\x00\x00\x00\x00\x00A4701000\x00\x00\x00\x00\x00\x00\x00\x00',
|
||||
|
@ -1358,6 +1359,26 @@ FW_VERSIONS = {
|
|||
b'8646F7801100\x00\x00\x00\x00',
|
||||
],
|
||||
},
|
||||
CAR.LEXUS_RC: {
|
||||
(Ecu.engine, 0x7e0, None): [
|
||||
b'\x0232484000\x00\x00\x00\x00\x00\x00\x00\x0052422000\x00\x00\x00\x00\x00\x00\x00\x00',
|
||||
],
|
||||
(Ecu.esp, 0x7b0, None): [
|
||||
b'F152624221\x00\x00\x00\x00\x00\x00',
|
||||
],
|
||||
(Ecu.dsu, 0x791, None): [
|
||||
b'881512409100\x00\x00\x00\x00',
|
||||
],
|
||||
(Ecu.eps, 0x7a1, None): [
|
||||
b'8965B24081\x00\x00\x00\x00\x00\x00',
|
||||
],
|
||||
(Ecu.fwdRadar, 0x750, 0xf): [
|
||||
b'8821F4702300\x00\x00\x00\x00',
|
||||
],
|
||||
(Ecu.fwdCamera, 0x750, 0x6d): [
|
||||
b'8646F2402200\x00\x00\x00\x00',
|
||||
],
|
||||
},
|
||||
CAR.LEXUS_RX: {
|
||||
(Ecu.engine, 0x700, None): [
|
||||
b'\x01896630E36200\x00\x00\x00\x00',
|
||||
|
@ -1558,6 +1579,7 @@ DBC = {
|
|||
CAR.RAV4: dbc_dict('toyota_rav4_2017_pt_generated', 'toyota_adas'),
|
||||
CAR.PRIUS: dbc_dict('toyota_prius_2017_pt_generated', 'toyota_adas'),
|
||||
CAR.COROLLA: dbc_dict('toyota_corolla_2017_pt_generated', 'toyota_adas'),
|
||||
CAR.LEXUS_RC: dbc_dict('lexus_is_2018_pt_generated', 'toyota_adas'),
|
||||
CAR.LEXUS_RX: dbc_dict('lexus_rx_350_2016_pt_generated', 'toyota_adas'),
|
||||
CAR.LEXUS_RXH: dbc_dict('lexus_rx_hybrid_2017_pt_generated', 'toyota_adas'),
|
||||
CAR.LEXUS_RX_TSS2: dbc_dict('toyota_nodsu_pt_generated', 'toyota_tss2_adas'),
|
||||
|
|
|
@ -122,6 +122,7 @@ routes = [
|
|||
TestRoute("25057fa6a5a63dfb|2020-03-04--08-44-23", TOYOTA.LEXUS_CTH),
|
||||
TestRoute("f49e8041283f2939|2019-05-30--11-51-51", TOYOTA.LEXUS_ESH_TSS2),
|
||||
TestRoute("37041c500fd30100|2020-12-30--12-17-24", TOYOTA.LEXUS_ESH),
|
||||
TestRoute("32696cea52831b02|2021-11-19--18-13-30", TOYOTA.LEXUS_RC),
|
||||
TestRoute("886fcd8408d570e9|2020-01-29--05-11-22", TOYOTA.LEXUS_RX),
|
||||
TestRoute("886fcd8408d570e9|2020-01-29--02-18-55", TOYOTA.LEXUS_RX),
|
||||
TestRoute("d27ad752e9b08d4f|2021-05-26--19-39-51", TOYOTA.LEXUS_RXH),
|
||||
|
|
Loading…
Reference in New Issue